import { Controller, UseGuards, Post, Body, Put, Param, Get, Query, Delete } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; import { BaseCrudController, PermissionsGuard, Permissions } from '@devstroupe/devkit-nest'; import { RoleService } from '../../service/role.service'; import { Role } from '../../domain/role'; import { CreateRoleDto, UpdateRoleDto } from './role.dto'; import { JwtAuthGuard } from '../../../auth/jwt-auth.guard'; @UseGuards(JwtAuthGuard, PermissionsGuard) @Controller('role') @ApiTags('role') export class RoleController extends BaseCrudController { constructor(private readonly roleService: RoleService) { super(roleService); } @Post() @Permissions('create:role') @ApiOperation({ summary: 'Criar novo perfil de acesso' }) override async create(@Body() dto: CreateRoleDto): Promise { return super.create(dto); } @Put(':id') @Permissions('update:role') @ApiOperation({ summary: 'Atualizar perfil de acesso' }) override async update(@Param('id') id: string, @Body() dto: UpdateRoleDto): Promise { return super.update(id, dto); } @Get() @Permissions('read:role') @ApiOperation({ summary: 'Listar perfis de acesso' }) override async findMany(@Query() query: any): Promise { return super.findMany(query); } @Get(':id') @Permissions('read:role') @ApiOperation({ summary: 'Obter perfil de acesso por ID' }) override async findById(@Param('id') id: string): Promise { return super.findById(id); } @Delete(':id') @Permissions('delete:role') @ApiOperation({ summary: 'Excluir perfil de acesso' }) override async delete(@Param('id') id: string): Promise { return super.delete(id); } }