From 801c6976071c713435c241288de524ab0e2cf657 Mon Sep 17 00:00:00 2001 From: Algirdas Grumuldis Date: Tue, 27 Jul 2021 16:40:39 +0300 Subject: [PATCH] feat: supports async IoC container --- packages/cli/src/routeGeneration/templates/express.hbs | 5 +++-- packages/cli/src/routeGeneration/templates/hapi.hbs | 4 ++-- packages/cli/src/routeGeneration/templates/koa.hbs | 2 +- packages/runtime/src/interfaces/iocModule.ts | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/routeGeneration/templates/express.hbs b/packages/cli/src/routeGeneration/templates/express.hbs index 222b28b66..68f1ccd6d 100644 --- a/packages/cli/src/routeGeneration/templates/express.hbs +++ b/packages/cli/src/routeGeneration/templates/express.hbs @@ -68,7 +68,8 @@ export function RegisterRoutes(app: express.Router) { {{#if uploadFiles}} upload.array('{{uploadFilesName}}'), {{/if}} - function {{../name}}_{{name}}(request: any, response: any, next: any) { + + {{#if ../../iocModule}}async {{/if}}function {{../name}}_{{name}}(request: any, response: any, next: any) { const args = { {{#each parameters}} {{@key}}: {{{json this}}}, @@ -87,7 +88,7 @@ export function RegisterRoutes(app: express.Router) { {{#if ../../iocModule}} const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = container.get<{{../name}}>({{../name}}); + const controller: any = await container.get<{{../name}}>({{../name}}); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } diff --git a/packages/cli/src/routeGeneration/templates/hapi.hbs b/packages/cli/src/routeGeneration/templates/hapi.hbs index ddb325154..d0fc3960f 100644 --- a/packages/cli/src/routeGeneration/templates/hapi.hbs +++ b/packages/cli/src/routeGeneration/templates/hapi.hbs @@ -91,7 +91,7 @@ export function RegisterRoutes(server: any) { allow: 'multipart/form-data' }, {{/if}} - handler: function {{../name}}_{{name}}(request: any, h: any) { + handler: {{#if ../../iocModule}}async {{/if}}function {{../name}}_{{name}}(request: any, h: any) { const args = { {{#each parameters}} {{@key}}: {{{json this}}}, @@ -119,7 +119,7 @@ export function RegisterRoutes(server: any) { {{#if ../../iocModule}} const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = container.get<{{../name}}>({{../name}}); + const controller: any = await container.get<{{../name}}>({{../name}}); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } diff --git a/packages/cli/src/routeGeneration/templates/koa.hbs b/packages/cli/src/routeGeneration/templates/koa.hbs index 51474567d..52277b80a 100644 --- a/packages/cli/src/routeGeneration/templates/koa.hbs +++ b/packages/cli/src/routeGeneration/templates/koa.hbs @@ -90,7 +90,7 @@ export function RegisterRoutes(router: KoaRouter) { {{#if ../../iocModule}} const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(context.request) : iocContainer; - const controller: any = container.get<{{../name}}>({{../name}}); + const controller: any = await container.get<{{../name}}>({{../name}}); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } diff --git a/packages/runtime/src/interfaces/iocModule.ts b/packages/runtime/src/interfaces/iocModule.ts index 1270fa25a..c4795aaa9 100644 --- a/packages/runtime/src/interfaces/iocModule.ts +++ b/packages/runtime/src/interfaces/iocModule.ts @@ -1,5 +1,7 @@ export interface IocContainer { get(controller: { prototype: T }): T; + + get(controller: { prototype: T }): Promise; } export type IocContainerFactory = (request: unknown) => IocContainer;