import { Template } from '../../template' const tpl: Template = p => ({ fileName: `${p.module}.controller.ts`, script: true, content: ` import { Controller, Get, Put, Patch, Delete, Body, Param, Query, NotFoundException } from "@nestjs/common"; import { EntityDTO } from "@boilerplate/crud-generator"; import { ${p.className}Entity } from "./${p.module}.entity"; import { ${p.className}Service } from "./${p.module}.service"; import { ${p.className}ConversionService } from "./${p.module}.conversion.service"; import { ${p.className}PaginationDTO } from "./dtos/paginate.dto"; import { ${p.className}SortDTO } from "./dtos/sort.dto"; import { ${p.className}FilterDTO } from "./dtos/filter.dto"; import { ${p.className}UpdateDTO } from "./dtos/update.dto"; @Controller('test') export class ${p.className}Controller { constructor(public service: ${p.className}Service, public conversionService: ${p.className}ConversionService) { } @Get() async list(@Query('filters') filters: ${p.className}FilterDTO, @Query('sort') sort: ${p.className}SortDTO, @Query('paginate') paginate: ${p.className}PaginationDTO): Promise[]> { return this.service.findMany(filters, sort, paginate); } @Get(':id') async findOne(@Param('id') id: string): Promise> { const entity = await this.service.findOne(id); if (entity === undefined) { throw new NotFoundException("Entity not found"); } return this.conversionService.entityToDto(entity); } @Put('create') async create(@Body() dto: EntityDTO<${p.className}Entity>) { this.service.save(this.service.create(dto)); } @Patch('update/:id') async update(@Param('id') id: string, dto: ${p.className}UpdateDTO) { if (!await this.service.update(id, dto)) { throw new NotFoundException(); } } @Delete('remove') async remove(@Param('id') id: string) { if (!await this.service.removeById(id)) { throw new NotFoundException(); } } } ` }) export default tpl