/
Masunium
/
forms-test-backend
Обзор
Документация
Войти
/
Masunium
/
forms-test-backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/form/form.controller.ts
175 строк
5 KB
Masunium
fixed form bugs
12 мар 2026, 19:51
12 мар 2026, 19:51
491d4b1
Код
Авторство
О чём код?
import { Body, Controller, Delete, Get, Param, Post, Put, Query, } from '@nestjs/common'; import { ApiBearerAuth, ApiBody, ApiCreatedResponse, ApiForbiddenResponse, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiQuery, ApiTags, ApiUnauthorizedResponse, } from '@nestjs/swagger'; import { CreateFormDto } from './dto/create-form.dto'; import { FormService } from './form.service'; import { Authorized } from 'src/auth/decorators/authorized.decorator'; import { Authorization } from 'src/auth/decorators/authorization.decorator'; @ApiTags('Forms') @ApiBearerAuth() @Controller('form') export class FormController { constructor(private readonly formService: FormService) { } @ApiOperation({ summary: 'Создание формы', description: 'Создает новую форму от имени авторизованного пользователя', }) @ApiBody({ type: CreateFormDto }) @ApiCreatedResponse({ description: 'Форма успешно создана', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @Authorization() @Post() create(@Body() dto: CreateFormDto, @Authorized('id') userId: string) { return this.formService.create(dto, userId); } @ApiOperation({ summary: 'Получение всех форм', description: 'Возвращает список всех форм', }) @ApiQuery({ name: 'title', required: false, description: 'Фильтр по названию формы', }) @ApiQuery({ name: 'sort', required: false, description: 'Сортировка по названию формы', enum: ['asc', 'desc'], }) @ApiOkResponse({ description: 'Список форм получен', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @Authorization() @Get() findAll( @Query('title') title?: string, @Query('sort') sort?: 'asc' | 'desc', ) { return this.formService.findAll(title, sort); } @ApiOperation({ summary: 'Мои формы', description: 'Возвращает формы, созданные текущим пользователем', }) @ApiQuery({ name: 'title', required: false, description: 'Фильтр по названию формы', }) @ApiQuery({ name: 'sort', required: false, description: 'Сортировка по названию формы', enum: ['asc', 'desc'], }) @ApiOkResponse({ description: 'Список пользовательских форм получен', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @Authorization() @Get('/my') findAllUserForms( @Authorized('id') userId: string, @Query('title') title?: string, @Query('sort') sort?: 'asc' | 'desc', ) { return this.formService.findAllUserForms(userId, title, sort); } @ApiOperation({ summary: 'Получение формы по id', }) @ApiBody({ type: CreateFormDto }) @ApiOkResponse({ description: 'Форма найдена', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @ApiNotFoundResponse({ description: 'Форма не найдена', }) @Authorization() @Get(':id') findOne(@Param('id') id: string) { return this.formService.findOne(id); } @ApiOperation({ summary: 'Обновление формы', description: 'Обновить форму может только ее автор', }) @ApiOkResponse({ description: 'Форма успешно обновлена', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @ApiForbiddenResponse({ description: 'Нет прав на изменение формы', }) @ApiNotFoundResponse({ description: 'Форма не найдена', }) @Authorization() @Put(':id') update( @Param('id') id: string, @Body() dto: CreateFormDto, @Authorized('id') userId: string, ) { return this.formService.update(id, dto, userId); } @ApiOperation({ summary: 'Удаление формы', description: 'Удалить форму может только автор', }) @ApiOkResponse({ description: 'Форма успешно удалена', }) @ApiUnauthorizedResponse({ description: 'Пользователь не авторизован', }) @ApiNotFoundResponse({ description: 'Форма не найдена', }) @Authorization() @Delete(':id') delete(@Authorized('id') userId: string, @Param('id') id: string) { return this.formService.delete(userId, id); } }