import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'; import { Permissions } from '../common/permissions.js'; import { AuditLog, RequirePermissions } from '../auth/decorators.js'; import { CreateResourceDto, UpdateResourceDto } from './dto.js'; import { ResourcesService } from './resources.service.js'; @Controller('resources') export class ResourcesController { constructor(private readonly service: ResourcesService) {} @Get() @RequirePermissions(Permissions.resource.list) list() { return this.service.list({}, { sort: 'asc' }); } @Get(':id') @RequirePermissions(Permissions.resource.list) get(@Param('id') id: string) { return this.service.findById(id); } @Post() @RequirePermissions(Permissions.resource.create) @AuditLog('resource', 'create') create(@Body() dto: CreateResourceDto) { return this.service.createResource(dto); } @Patch(':id') @RequirePermissions(Permissions.resource.update) @AuditLog('resource', 'update') update(@Param('id') id: string, @Body() dto: UpdateResourceDto) { return this.service.updateResource(id, dto); } @Delete(':id') @RequirePermissions(Permissions.resource.delete) @AuditLog('resource', 'delete') remove(@Param('id') id: string) { return this.service.softRemove(id); } }