✨ feat(src/modules/likes/likes.controller.ts): обновляет ответы API для создания лайка и получения совпадений ✨ feat(src/auth/auth.controller.ts): обновляет ответы API для регистрации, входа и выхода пользователя ✨ feat(src/modules/media/media.controller.ts): обновляет ответы API для загрузки и получения медиа ✨ feat(src/modules/users/users.controller.ts): обновляет ответы API для получения и управления пользователями ✨ feat(src/modules/dates/dto/dates-response.dto.ts): изменяет название свойства статуса даты на dateStatus ✨ feat(src/modules/cities/cities.controller.ts): обновляет ответы API для получения и создания городов и районов ✨ feat(src/modules/chat/chat.controller.ts): обновляет ответы API для создания и получения чатов и сообщений ✨ feat(src/modules/reports/reports.controller.ts): обновляет ответы API для создания и получения отчетов ✨ feat(src/modules/feed/feed.controller.ts): обновляет структуру ответа
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { Body, Controller, Get, Param, Post, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
|
|
import { Public } from '../../common/decorators/public.decorator';
|
|
import { Roles } from '../../common/decorators/roles.decorator';
|
|
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
|
|
import { RolesGuard } from '../../common/guards/roles.guard';
|
|
import { CitiesService } from './cities.service';
|
|
import { CityResponseDto, DistrictResponseDto } from './dto/city-response.dto';
|
|
import { CreateCityDto, CreateDistrictDto } from './dto/create-city.dto';
|
|
|
|
@ApiTags('cities')
|
|
@Controller('cities')
|
|
export class CitiesController {
|
|
constructor(private readonly citiesService: CitiesService) {}
|
|
|
|
@Public()
|
|
@Get()
|
|
@ApiOperation({ summary: 'Get all cities' })
|
|
@ApiOkResponse({ type: [CityResponseDto] })
|
|
findAll() {
|
|
return this.citiesService.findAll();
|
|
}
|
|
|
|
@Public()
|
|
@Get(':cityId/districts')
|
|
@ApiOperation({ summary: 'Get districts for a city' })
|
|
@ApiOkResponse({ type: [DistrictResponseDto] })
|
|
findDistricts(@Param('cityId') cityId: string) {
|
|
return this.citiesService.findDistricts(cityId);
|
|
}
|
|
|
|
@ApiBearerAuth()
|
|
@UseGuards(JwtAuthGuard, RolesGuard)
|
|
@Roles('admin')
|
|
@Post()
|
|
@ApiOperation({ summary: 'Create city (admin only)' })
|
|
@ApiCreatedResponse({ type: CityResponseDto })
|
|
createCity(@Body() body: CreateCityDto) {
|
|
return this.citiesService.createCity(body.name, body.lat, body.lng);
|
|
}
|
|
|
|
@ApiBearerAuth()
|
|
@UseGuards(JwtAuthGuard, RolesGuard)
|
|
@Roles('admin')
|
|
@Post(':cityId/districts')
|
|
@ApiOperation({ summary: 'Create district (admin only)' })
|
|
@ApiCreatedResponse({ type: DistrictResponseDto })
|
|
createDistrict(@Param('cityId') cityId: string, @Body() body: CreateDistrictDto) {
|
|
return this.citiesService.createDistrict(cityId, body.name);
|
|
}
|
|
}
|