Skip to content

Commit 13eaa12

Browse files
committed
feat: swagger and cleanup
1 parent 07eb49b commit 13eaa12

8 files changed

+83
-17
lines changed

nest-cli.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
{
2-
"$schema": "https://json.schemastore.org/nest-cli",
3-
"collection": "@nestjs/schematics",
4-
"sourceRoot": "src",
5-
"compilerOptions": {
6-
"deleteOutDir": true
7-
}
2+
"$schema": "https://json.schemastore.org/nest-cli",
3+
"collection": "@nestjs/schematics",
4+
"sourceRoot": "src",
5+
"compilerOptions": {
6+
"plugins": ["@nestjs/swagger"],
7+
"deleteOutDir": true
8+
}
89
}

package-lock.json

+44-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@nestjs/core": "^10.0.0",
2828
"@nestjs/mapped-types": "*",
2929
"@nestjs/platform-express": "^10.0.0",
30+
"@nestjs/swagger": "^7.3.0",
3031
"@nestjs/typeorm": "^10.0.1",
3132
"better-sqlite3": "^9.4.0",
3233
"pg": "^8.11.3",

src/actors/actors.controller.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
import { Controller, Get, Param, Query } from "@nestjs/common";
22
import { ActorsService } from "./actors.service";
3+
import { ApiOkResponse, ApiTags } from "@nestjs/swagger";
4+
import { SearchQuery } from "./dto/search-query.dto";
5+
import { Actor } from "./entities/actor.entity";
36

7+
@ApiTags("actors")
48
@Controller("actors")
59
export class ActorsController {
610
constructor(private readonly actorsService: ActorsService) {}
711

12+
@ApiOkResponse({ type: Actor })
813
@Get()
9-
searchOne(@Query() query: { name?: string; description?: string }) {
14+
searchOne(@Query() query: SearchQuery) {
1015
return this.actorsService.searchOne(query);
1116
}
1217

18+
@ApiOkResponse({ type: Actor })
1319
@Get(":id")
1420
findOne(@Param("id") id: string) {
1521
return this.actorsService.findOne(+id);

src/actors/dto/search-query.dto.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export class SearchQuery {
2+
name?: string;
3+
description?: string;
4+
}

src/dentries/dentries.controller.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { Controller, Get, Param, Query } from "@nestjs/common";
22
import { DentriesService } from "./dentries.service";
3+
import { ApiTags } from "@nestjs/swagger";
4+
import { SearchQuery } from "./dto/search-query.dto";
35

6+
@ApiTags("dentries")
47
@Controller("dentries")
58
export class DentriesController {
69
constructor(private readonly dentriesService: DentriesService) {}
@@ -13,13 +16,7 @@ export class DentriesController {
1316
@Get()
1417
findOneByParams(
1518
@Query()
16-
queryParams: {
17-
title?: string;
18-
text?: string;
19-
actor?: number;
20-
conversant?: number;
21-
conversationid?: number;
22-
},
19+
queryParams: SearchQuery,
2320
) {
2421
return this.dentriesService.searchOne(queryParams);
2522
}

src/dentries/dto/search-query.dto.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export class SearchQuery {
2+
title?: string;
3+
text?: string;
4+
actor?: number;
5+
conversant?: number;
6+
conversationid?: number;
7+
}

src/main.ts

+9
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
import { NestFactory } from "@nestjs/core";
22
import { AppModule } from "./app.module";
3+
import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger";
34

45
const port = process.env.PORT || 3000;
56

67
async function bootstrap() {
78
const app = await NestFactory.create(AppModule);
89
app.setGlobalPrefix("api/v1");
10+
app.enableCors();
11+
12+
const config = new DocumentBuilder()
13+
.setTitle("Disco API")
14+
.setVersion("1.0")
15+
.build();
16+
const document = SwaggerModule.createDocument(app, config);
17+
SwaggerModule.setup("docs", app, document);
918

1019
console.log(
1120
`Launching NestJS app on port ${port}, URL: http://0.0.0.0:${port}`,

0 commit comments

Comments
 (0)