diff --git a/backend/src/modules/users/controllers/users.controller.ts b/backend/src/modules/users/controllers/users.controller.ts index 207ed95..11e45e9 100644 --- a/backend/src/modules/users/controllers/users.controller.ts +++ b/backend/src/modules/users/controllers/users.controller.ts @@ -9,10 +9,12 @@ import { HttpCode, HttpStatus, } from '@nestjs/common'; +import { ApiTags, ApiOperation, ApiResponse, ApiParam } from '@nestjs/swagger'; import { UsersService } from '../services/users.service'; import { CreateUserDto } from '../dto/create-user.dto'; import { UpdateUserDto } from '../dto/update-user.dto'; +@ApiTags('users') @Controller('users') export class UsersController { constructor(private readonly usersService: UsersService) {} @@ -20,6 +22,9 @@ export class UsersController { /** * Create a new user */ + @ApiOperation({ summary: 'Create a new user' }) + @ApiResponse({ status: 201, description: 'The user has been successfully created.' }) + @ApiResponse({ status: 400, description: 'Bad request.' }) @Post() @HttpCode(HttpStatus.CREATED) create(@Body() createUserDto: CreateUserDto) { @@ -29,6 +34,8 @@ export class UsersController { /** * Get all users */ + @ApiOperation({ summary: 'Get all users' }) + @ApiResponse({ status: 200, description: 'Return all users.' }) @Get() findAll() { return this.usersService.findAll(); @@ -37,6 +44,10 @@ export class UsersController { /** * Get a user by ID */ + @ApiOperation({ summary: 'Get a user by ID' }) + @ApiResponse({ status: 200, description: 'Return the user.' }) + @ApiResponse({ status: 404, description: 'User not found.' }) + @ApiParam({ name: 'id', description: 'The ID of the user' }) @Get(':id') findOne(@Param('id') id: string) { return this.usersService.findById(id); @@ -45,6 +56,11 @@ export class UsersController { /** * Update a user */ + @ApiOperation({ summary: 'Update a user' }) + @ApiResponse({ status: 200, description: 'The user has been successfully updated.' }) + @ApiResponse({ status: 400, description: 'Bad request.' }) + @ApiResponse({ status: 404, description: 'User not found.' }) + @ApiParam({ name: 'id', description: 'The ID of the user' }) @Patch(':id') update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) { return this.usersService.update(id, updateUserDto); @@ -53,6 +69,10 @@ export class UsersController { /** * Delete a user */ + @ApiOperation({ summary: 'Delete a user' }) + @ApiResponse({ status: 204, description: 'The user has been successfully deleted.' }) + @ApiResponse({ status: 404, description: 'User not found.' }) + @ApiParam({ name: 'id', description: 'The ID of the user' }) @Delete(':id') @HttpCode(HttpStatus.NO_CONTENT) remove(@Param('id') id: string) { @@ -62,6 +82,10 @@ export class UsersController { /** * Update GDPR consent timestamp */ + @ApiOperation({ summary: 'Update GDPR consent timestamp' }) + @ApiResponse({ status: 200, description: 'The GDPR consent timestamp has been successfully updated.' }) + @ApiResponse({ status: 404, description: 'User not found.' }) + @ApiParam({ name: 'id', description: 'The ID of the user' }) @Post(':id/gdpr-consent') @HttpCode(HttpStatus.OK) updateGdprConsent(@Param('id') id: string) { @@ -71,6 +95,10 @@ export class UsersController { /** * Export user data (for GDPR compliance) */ + @ApiOperation({ summary: 'Export user data (for GDPR compliance)' }) + @ApiResponse({ status: 200, description: 'Return the user data.' }) + @ApiResponse({ status: 404, description: 'User not found.' }) + @ApiParam({ name: 'id', description: 'The ID of the user' }) @Get(':id/export-data') exportUserData(@Param('id') id: string) { return this.usersService.exportUserData(id);