formato correcto de cuestionario por verificar
This commit is contained in:
@@ -2,32 +2,39 @@ import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/commo
|
||||
import { OpcionService } from './opcion.service';
|
||||
import { CreateOpcionDto } from './dto/create-opcion.dto';
|
||||
import { UpdateOpcionDto } from './dto/update-opcion.dto';
|
||||
import { OpcionApiDocumentation } from './opcion.documentation';
|
||||
|
||||
@Controller('opcion')
|
||||
@OpcionApiDocumentation.ApiController
|
||||
export class OpcionController {
|
||||
constructor(private readonly opcionService: OpcionService) {}
|
||||
|
||||
@Post()
|
||||
@OpcionApiDocumentation.ApiCreate
|
||||
create(@Body() createOpcionDto: CreateOpcionDto) {
|
||||
return this.opcionService.create(createOpcionDto);
|
||||
}
|
||||
|
||||
@Get()
|
||||
@OpcionApiDocumentation.ApiGetAll
|
||||
findAll() {
|
||||
return this.opcionService.findAll();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
@OpcionApiDocumentation.ApiGetOne
|
||||
findOne(@Param('id') id: string) {
|
||||
return this.opcionService.findOne(+id);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
@OpcionApiDocumentation.ApiUpdate
|
||||
update(@Param('id') id: string, @Body() updateOpcionDto: UpdateOpcionDto) {
|
||||
return this.opcionService.update(+id, updateOpcionDto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
@OpcionApiDocumentation.ApiRemove
|
||||
remove(@Param('id') id: string) {
|
||||
return this.opcionService.remove(+id);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
import { ApiBody, ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger';
|
||||
import { applyDecorators } from '@nestjs/common';
|
||||
|
||||
export class OpcionApiDocumentation {
|
||||
// Decoradores para toda la clase del controlador
|
||||
static ApiController = ApiTags('Opciones');
|
||||
|
||||
// Documentación para crear una opción
|
||||
static ApiCreate = applyDecorators(
|
||||
ApiOperation({
|
||||
summary: 'Crear una nueva opción',
|
||||
description: 'Crea una nueva opción para una pregunta'
|
||||
}),
|
||||
ApiBody({
|
||||
description: 'Datos de la opción a crear',
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['opcion'],
|
||||
properties: {
|
||||
opcion: { type: 'string', example: 'Si' }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 201,
|
||||
description: 'Opción creada correctamente',
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id_opcion: { type: 'number', example: 1 },
|
||||
opcion: { type: 'string', example: 'Si' }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({ status: 400, description: 'Datos de la opción inválidos' }),
|
||||
ApiResponse({ status: 500, description: 'Error interno del servidor' })
|
||||
);
|
||||
|
||||
// Documentación para obtener todas las opciones
|
||||
static ApiGetAll = applyDecorators(
|
||||
ApiOperation({
|
||||
summary: 'Obtener todas las opciones',
|
||||
description: 'Retorna una lista de todas las opciones registradas'
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'Lista de opciones obtenida correctamente',
|
||||
schema: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id_opcion: { type: 'number', example: 1 },
|
||||
opcion: { type: 'string', example: 'Si' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({ status: 500, description: 'Error interno del servidor' })
|
||||
);
|
||||
|
||||
// Documentación para obtener una opción por ID
|
||||
static ApiGetOne = applyDecorators(
|
||||
ApiOperation({
|
||||
summary: 'Obtener una opción por ID',
|
||||
description: 'Retorna una opción específica por su ID'
|
||||
}),
|
||||
ApiParam({
|
||||
name: 'id',
|
||||
description: 'ID de la opción',
|
||||
required: true,
|
||||
type: 'number',
|
||||
example: 1
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'Opción obtenida correctamente',
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id_opcion: { type: 'number', example: 1 },
|
||||
opcion: { type: 'string', example: 'Si' }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({ status: 404, description: 'Opción no encontrada' }),
|
||||
ApiResponse({ status: 500, description: 'Error interno del servidor' })
|
||||
);
|
||||
|
||||
// Documentación para actualizar una opción
|
||||
static ApiUpdate = applyDecorators(
|
||||
ApiOperation({
|
||||
summary: 'Actualizar una opción',
|
||||
description: 'Actualiza los datos de una opción existente'
|
||||
}),
|
||||
ApiParam({
|
||||
name: 'id',
|
||||
description: 'ID de la opción a actualizar',
|
||||
required: true,
|
||||
type: 'number',
|
||||
example: 1
|
||||
}),
|
||||
ApiBody({
|
||||
description: 'Datos a actualizar de la opción',
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
opcion: { type: 'string', example: 'Opción actualizada' }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'Opción actualizada correctamente',
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
affected: { type: 'number', example: 1 }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({ status: 400, description: 'Datos de actualización inválidos' }),
|
||||
ApiResponse({ status: 404, description: 'Opción no encontrada' }),
|
||||
ApiResponse({ status: 500, description: 'Error interno del servidor' })
|
||||
);
|
||||
|
||||
// Documentación para eliminar una opción
|
||||
static ApiRemove = applyDecorators(
|
||||
ApiOperation({
|
||||
summary: 'Eliminar una opción',
|
||||
description: 'Elimina permanentemente una opción por su ID'
|
||||
}),
|
||||
ApiParam({
|
||||
name: 'id',
|
||||
description: 'ID de la opción a eliminar',
|
||||
required: true,
|
||||
type: 'number',
|
||||
example: 1
|
||||
}),
|
||||
ApiResponse({
|
||||
status: 200,
|
||||
description: 'Opción eliminada correctamente',
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
affected: { type: 'number', example: 1 }
|
||||
}
|
||||
}
|
||||
}),
|
||||
ApiResponse({ status: 404, description: 'Opción no encontrada' }),
|
||||
ApiResponse({ status: 500, description: 'Error interno del servidor' })
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user