import { Body, Controller, Delete, Param, Post, Put, } from '@nestjs/common'; import { {{pascalCase name}}DataOrchestrator } from '../domain/usecases/{{dashCase name}}-data.orchestrator'; import { {{pascalCase name}}Dto } from './dto/{{dashCase name}}.dto'; import { MODULE_NAME } from 'src/core/strings/constants/module.constants'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { {{pascalCase name}}Entity } from '../domain/entities/{{dashCase name}}.entity'; import { BatchResult } from 'src/core/response/domain/ok-response.interface'; import { BatchIdsDto } from 'src/core/modules/infrastructure/dto/base-batch.dto'; import { Public } from 'src/core/guards'; @ApiTags(`${MODULE_NAME.{{constantCase name}}.split('-').join(' ')} - data`) @Controller(`v1/${MODULE_NAME.{{constantCase name}} }`) @Public(false) @ApiBearerAuth('JWT') export class {{pascalCase name}}DataController { constructor(private orchestrator: {{pascalCase name}}DataOrchestrator) {} @Post() async create( @Body() data: {{pascalCase name}}Dto, ): Promise<{{pascalCase name}}Entity> { return await this.orchestrator.create(data); } @Put('/batch-delete') async batchDeleted(@Body() body: BatchIdsDto): Promise { return await this.orchestrator.batchDelete(body.ids); } @Put(':id') async update( @Param('id') dataId: string, @Body() data: Create{{pascalCase name}}Dto, ): Promise<{{pascalCase name}}Entity> { return await this.orchestrator.update(dataId, data); } @Delete(':id') async delete(@Param('id') dataId: string): Promise { return await this.orchestrator.delete(dataId); } }