Skip to content

Commit 3cd34b1

Browse files
[typescript-nestjs-server] Fix #21842 by updating api.module.mustache
1 parent 8a4246c commit 3cd34b1

File tree

5 files changed

+50
-10
lines changed

5 files changed

+50
-10
lines changed

modules/openapi-generator/src/main/resources/typescript-nestjs-server/api.module.mustache

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,30 @@ import { {{classname}}Controller } from './controllers';
77
{{/apis}}
88
{{/apiInfo}}
99

10+
export type ApiModuleConfiguration = {
11+
/**
12+
* your Api implementations
13+
*/
14+
apiImplementations: ApiImplementations,
15+
/**
16+
* additional Providers that may be used by your implementations
17+
*/
18+
providers?: Provider[],
19+
}
20+
1021
@Module({})
1122
export class ApiModule {
12-
static forRoot(apiImplementations: ApiImplementations): DynamicModule {
23+
static forRoot(configuration: ApiModuleConfiguration): DynamicModule {
1324
const providers: Provider[] = [
1425
{{#apiInfo}}
1526
{{#apis}}
1627
{
1728
provide: {{classname}},
18-
useClass: apiImplementations.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}
29+
useClass: configuration.apiImplementations.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}
1930
},
2031
{{/apis}}
2132
{{/apiInfo}}
33+
...(configuration.providers || []),
2234
];
2335

2436
return {

samples/server/petstore/typescript-nestjs-server/builds/default/api.module.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,34 @@ import { StoreApiController } from './controllers';
77
import { UserApi } from './api';
88
import { UserApiController } from './controllers';
99

10+
export type ApiModuleConfiguration = {
11+
/**
12+
* your Api implementations
13+
*/
14+
apiImplementations: ApiImplementations,
15+
/**
16+
* additional Providers that may be used by your implementations
17+
*/
18+
providers?: Provider[],
19+
}
20+
1021
@Module({})
1122
export class ApiModule {
12-
static forRoot(apiImplementations: ApiImplementations): DynamicModule {
23+
static forRoot(configuration: ApiModuleConfiguration): DynamicModule {
1324
const providers: Provider[] = [
1425
{
1526
provide: PetApi,
16-
useClass: apiImplementations.petApi
27+
useClass: configuration.apiImplementations.petApi
1728
},
1829
{
1930
provide: StoreApi,
20-
useClass: apiImplementations.storeApi
31+
useClass: configuration.apiImplementations.storeApi
2132
},
2233
{
2334
provide: UserApi,
24-
useClass: apiImplementations.userApi
35+
useClass: configuration.apiImplementations.userApi
2536
},
37+
...(configuration.providers || []),
2638
];
2739

2840
return {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Injectable } from '@nestjs/common';
2+
3+
@Injectable()
4+
export class TestService {
5+
hello(): string {
6+
return "Hello World";
7+
}
8+
}

samples/server/petstore/typescript-nestjs-server/src/app.module.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@ import { PetService } from './handlers/PetService';
33
import { UserService } from './handlers/UserService';
44
import { StoreService } from './handlers/StoreService';
55
import { ApiModule } from '../builds/default';
6+
import { TestService } from './TestService';
67

78
@Module({
89
imports: [
910
ApiModule.forRoot({
10-
petApi: PetService,
11-
userApi: UserService,
12-
storeApi: StoreService,
13-
}),
11+
apiImplementations: {
12+
petApi: PetService,
13+
userApi: UserService,
14+
storeApi: StoreService,
15+
},
16+
providers: [TestService]
17+
}),
1418
],
1519
controllers: [],
1620
providers: [],

samples/server/petstore/typescript-nestjs-server/src/handlers/PetService.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ import { Observable } from 'rxjs';
33
import { Injectable } from '@nestjs/common';
44
import { PetApi } from '../../builds/default/api';
55
import { ApiResponse, Pet } from '../../builds/default/models';
6+
import { TestService } from '../TestService'
67

78
@Injectable()
89
export class PetService implements PetApi {
10+
11+
constructor(private readonly testService: TestService) {}
12+
913
addPet(pet: Pet, request: Request): Pet | Promise<Pet> | Observable<Pet> {
1014
console.log(JSON.stringify(pet));
1115
return pet;

0 commit comments

Comments
 (0)