Skip to content

Commit cd4c0d6

Browse files
added usage clarification to README, introduced module index.ts
1 parent ac039c5 commit cd4c0d6

3 files changed

Lines changed: 50 additions & 47 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsServerCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public String getHelp() {
129129
@Override
130130
public void processOpts() {
131131
super.processOpts();
132+
supportingFiles.add(new SupportingFile("module.mustache", "", "index.ts"));
132133
supportingFiles.add(
133134
new SupportingFile("models.mustache", modelPackage().replace('.', File.separatorChar), "index.ts"));
134135
supportingFiles

modules/openapi-generator/src/main/resources/typescript-nestjs-server/README.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,52 +5,52 @@ Usage: The generated output is intended to be its own module, that can be import
55
Example usage (with the openapi sample `petstore.yaml`):
66

77
1. Invoke openapi-generator
8-
```
9-
openapi-generator-cli.jar generate -i petstore.yaml -g typescript-nestjs-server -o api-module/
10-
```
11-
2. implement the contracts from `api-module/api`
12-
13-
`handlers/PetService.ts`:
14-
```typescript
15-
import { Pet, ApiResponse } from "models";
16-
import { Observable } from "rxjs";
17-
import { PetApi } from "../api";
18-
import { Inject, Injectable } from "@nestjs/common";
19-
20-
@Injectable()
21-
export class PetService implements PetApi {
22-
addPet(pet: Pet, request: Request): Pet | Promise<Pet> | Observable<Pet> {
23-
throw new Error("Method not implemented.");
24-
}
25-
26-
deletePet(petId: number, apiKey: string, request: Request): void | Promise<void> | Observable<void> {
27-
throw new Error("Method not implemented.");
28-
}
29-
30-
...
31-
```
32-
33-
3. Import the API Module with a reference to your implementation
34-
`app.module.ts`
35-
```typescript
36-
import { Module } from "@nestjs/common";
37-
import { ApiModule } from "api-module/api.module";
38-
import { PetService } from "./handlers/PetService";
39-
import { UserService } from "./handlers/UserService";
40-
import { StoreService } from "./handlers/StoreService";
41-
42-
@Module({
43-
imports: [
44-
ApiModule.forRoot({
45-
petApi: PetService,
46-
userApi: UserService,
47-
storeApi: StoreService
48-
}),
49-
],
50-
controllers: [],
51-
providers: [],
52-
})
53-
export class AppModule {}
54-
```
8+
```
9+
openapi-generator-cli.jar generate -i petstore.yaml -g typescript-nestjs-server -o api-module/
10+
```
11+
2. implement the contracts from `api-module/api`
12+
`handlers/PetService.ts`:
13+
```typescript
14+
import { Pet, ApiResponse } from "models";
15+
import { Observable } from "rxjs";
16+
import { PetApi } from "../api";
17+
import { Inject, Injectable } from "@nestjs/common";
18+
19+
@Injectable()
20+
export class PetService implements PetApi {
21+
addPet(pet: Pet, request: Request): Pet | Promise<Pet> | Observable<Pet> {
22+
throw new Error("Method not implemented.");
23+
}
24+
25+
deletePet(petId: number, apiKey: string, request: Request): void | Promise<void> | Observable<void> {
26+
throw new Error("Method not implemented.");
27+
}
28+
29+
...
30+
```
31+
3. Import the generated `ApiModule` with `ApiModule.forRoot` and provide a instance of `ApiImplementations` with a reference to your implementation
32+
`app.module.ts`
33+
```typescript
34+
import { Module } from "@nestjs/common";
35+
import { ApiModule, ApiImplementations } from "api-module";
36+
import { PetService } from "./handlers/PetService";
37+
import { UserService } from "./handlers/UserService";
38+
import { StoreService } from "./handlers/StoreService";
39+
40+
const apiImplementations: ApiImplementations = {
41+
petApi: PetService,
42+
userApi: UserService,
43+
storeApi: StoreService,
44+
}
45+
46+
@Module({
47+
imports: [
48+
ApiModule.forRoot(apiImplementations),
49+
],
50+
controllers: [],
51+
providers: [],
52+
})
53+
export class AppModule {}
54+
```
5555
5656
You now can regenerate the API module as often as you want without overriding your implementation.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './api.module'
2+
export * from './api-implementations'

0 commit comments

Comments
 (0)