Skip to content

Commit 0fd1671

Browse files
committed
feat: add base controller with find by id
1 parent 6d9c1d3 commit 0fd1671

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

src/common/base/base.controller.ts

+28-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,33 @@ export function BaseController<TEntity, TEntityDto>(
1515

1616
@Get()
1717
@ApiOperation({ summary: description })
18-
@Paginated(Entity, EntityDto)
18+
@Paginated(EntityDto, Entity)
19+
async finManyByQuery(@Query() query: IQuery): Promise<TEntityDto> {
20+
return this.service.findMany(query);
21+
}
22+
23+
@Get(':movieId')
24+
@ApiOperation({ summary: 'Поиск по movieId' })
25+
@Paginated(EntityDto)
26+
async findManyByMovieId(@Param('movieId') movieId: string): Promise<TEntityDto> {
27+
return this.service.findMany({ movieId });
28+
}
29+
}
30+
31+
return BaseController;
32+
}
33+
34+
export function BaseControllerWithFindById<TEntity, TEntityDto>(
35+
Entity: Constructor<TEntity>,
36+
EntityDto: Constructor<TEntityDto>,
37+
description?: string,
38+
) {
39+
abstract class BaseControllerWithFindById {
40+
protected constructor(readonly service: any) {}
41+
42+
@Get()
43+
@ApiOperation({ summary: description })
44+
@Paginated(EntityDto, Entity)
1945
async finManyByQuery(@Query() query: IQuery): Promise<TEntityDto> {
2046
return this.service.findMany(query);
2147
}
@@ -28,5 +54,5 @@ export function BaseController<TEntity, TEntityDto>(
2854
}
2955
}
3056

31-
return BaseController;
57+
return BaseControllerWithFindById;
3258
}

src/movie/movie.controller.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { MovieService } from './movie.service';
22
import { MovieDocsResponseDto } from './dto/movie-docs.response.dto';
33
import { Movie } from './schemas/movie.schema';
44

5-
import { BaseController } from 'src/common/base/base.controller';
5+
import { BaseControllerWithFindById } from 'src/common/base/base.controller';
66
import { Controller } from 'src/common/decorators/controller.decorator';
77

88
@Controller('movie', 'Фильмы, сериалы, и т.д.')
9-
export class MovieController extends BaseController(Movie, MovieDocsResponseDto, 'Поиск тайтлов') {
9+
export class MovieController extends BaseControllerWithFindById(Movie, MovieDocsResponseDto, 'Поиск тайтлов') {
1010
constructor(private readonly movieService: MovieService) {
1111
super(movieService);
1212
}

0 commit comments

Comments
 (0)