From 9bbbf8de0f8bd29d74b4baaab01b3daec031fdc6 Mon Sep 17 00:00:00 2001 From: Ary Obenholzner Date: Thu, 20 Nov 2025 18:28:49 +0100 Subject: [PATCH] [typescript-nestjs-server] Fix #21842 by updating api.module.mustache --- .../api.module.mustache | 16 +++++++++++++-- .../builds/default/api.module.ts | 20 +++++++++++++++---- .../package-lock.json | 4 ++-- .../src/TestService.ts | 8 ++++++++ .../src/app.module.ts | 12 +++++++---- .../src/handlers/PetService.ts | 4 ++++ 6 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 samples/server/petstore/typescript-nestjs-server/src/TestService.ts diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs-server/api.module.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs-server/api.module.mustache index 156373b1737d..0cde5f4aeaac 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs-server/api.module.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs-server/api.module.mustache @@ -7,18 +7,30 @@ import { {{classname}}Controller } from './controllers'; {{/apis}} {{/apiInfo}} +export type ApiModuleConfiguration = { + /** + * your Api implementations + */ + apiImplementations: ApiImplementations, + /** + * additional Providers that may be used by your implementations + */ + providers?: Provider[], +} + @Module({}) export class ApiModule { - static forRoot(apiImplementations: ApiImplementations): DynamicModule { + static forRoot(configuration: ApiModuleConfiguration): DynamicModule { const providers: Provider[] = [ {{#apiInfo}} {{#apis}} { provide: {{classname}}, - useClass: apiImplementations.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} + useClass: configuration.apiImplementations.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} }, {{/apis}} {{/apiInfo}} + ...(configuration.providers || []), ]; return { diff --git a/samples/server/petstore/typescript-nestjs-server/builds/default/api.module.ts b/samples/server/petstore/typescript-nestjs-server/builds/default/api.module.ts index c1c973cd11ee..09dcdafbae39 100644 --- a/samples/server/petstore/typescript-nestjs-server/builds/default/api.module.ts +++ b/samples/server/petstore/typescript-nestjs-server/builds/default/api.module.ts @@ -7,22 +7,34 @@ import { StoreApiController } from './controllers'; import { UserApi } from './api'; import { UserApiController } from './controllers'; +export type ApiModuleConfiguration = { + /** + * your Api implementations + */ + apiImplementations: ApiImplementations, + /** + * additional Providers that may be used by your implementations + */ + providers?: Provider[], +} + @Module({}) export class ApiModule { - static forRoot(apiImplementations: ApiImplementations): DynamicModule { + static forRoot(configuration: ApiModuleConfiguration): DynamicModule { const providers: Provider[] = [ { provide: PetApi, - useClass: apiImplementations.petApi + useClass: configuration.apiImplementations.petApi }, { provide: StoreApi, - useClass: apiImplementations.storeApi + useClass: configuration.apiImplementations.storeApi }, { provide: UserApi, - useClass: apiImplementations.userApi + useClass: configuration.apiImplementations.userApi }, + ...(configuration.providers || []), ]; return { diff --git a/samples/server/petstore/typescript-nestjs-server/package-lock.json b/samples/server/petstore/typescript-nestjs-server/package-lock.json index 673fc5ca6143..276b01e6e941 100644 --- a/samples/server/petstore/typescript-nestjs-server/package-lock.json +++ b/samples/server/petstore/typescript-nestjs-server/package-lock.json @@ -1,11 +1,11 @@ { - "name": "nest-openapi-poc", + "name": "typescript-nestjs-server", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "nest-openapi-poc", + "name": "typescript-nestjs-server", "version": "0.0.1", "license": "UNLICENSED", "dependencies": { diff --git a/samples/server/petstore/typescript-nestjs-server/src/TestService.ts b/samples/server/petstore/typescript-nestjs-server/src/TestService.ts new file mode 100644 index 000000000000..d506502a1056 --- /dev/null +++ b/samples/server/petstore/typescript-nestjs-server/src/TestService.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class TestService { + hello(): string { + return "Hello World"; + } +} \ No newline at end of file diff --git a/samples/server/petstore/typescript-nestjs-server/src/app.module.ts b/samples/server/petstore/typescript-nestjs-server/src/app.module.ts index 9451a5512e06..fc5667a2e4ca 100644 --- a/samples/server/petstore/typescript-nestjs-server/src/app.module.ts +++ b/samples/server/petstore/typescript-nestjs-server/src/app.module.ts @@ -3,14 +3,18 @@ import { PetService } from './handlers/PetService'; import { UserService } from './handlers/UserService'; import { StoreService } from './handlers/StoreService'; import { ApiModule } from '../builds/default'; +import { TestService } from './TestService'; @Module({ imports: [ ApiModule.forRoot({ - petApi: PetService, - userApi: UserService, - storeApi: StoreService, - }), + apiImplementations: { + petApi: PetService, + userApi: UserService, + storeApi: StoreService, + }, + providers: [TestService] +}), ], controllers: [], providers: [], diff --git a/samples/server/petstore/typescript-nestjs-server/src/handlers/PetService.ts b/samples/server/petstore/typescript-nestjs-server/src/handlers/PetService.ts index b92114a75048..858a93019a30 100644 --- a/samples/server/petstore/typescript-nestjs-server/src/handlers/PetService.ts +++ b/samples/server/petstore/typescript-nestjs-server/src/handlers/PetService.ts @@ -3,9 +3,13 @@ import { Observable } from 'rxjs'; import { Injectable } from '@nestjs/common'; import { PetApi } from '../../builds/default/api'; import { ApiResponse, Pet } from '../../builds/default/models'; +import { TestService } from '../TestService' @Injectable() export class PetService implements PetApi { + + constructor(private readonly testService: TestService) {} + addPet(pet: Pet, request: Request): Pet | Promise | Observable { console.log(JSON.stringify(pet)); return pet;