hono式DI
honoでDIするときには、Variablesを用いる。
type Variables: {
saveUsecase: SaveUsecase
}これを、Honoインスタンスの生成時にジェネリクスでBindingを設定する。
const app = new Hono<{
Variables: Variables
}>();
//または
const app = new OpenAPIHono<{
Variables: Variables
}>();useメソッドでミドルウェアを定義する。
app.use(
'*',
async (c, next) => {
const repo = new StorageRepositoryImpl();
c.set(
"saveUsecase",
new SaveUsecase(
storageRepo
)
)
}
)これをconroller内などで使用することができる。
pdfController.openapi(uploadRoute, async (c) => {
const { name } = c.req.valid('param');
const usecase = c.get("saveUsecase");
const result = await usecase.execute();
//etc
return c.json({ success: true }, 200);
});
おわり
index.tsのHonoインスタンスではないです。