import { Controller, Get, Post, Body, Patch, Param, Delete, Query, ParseIntPipe, DefaultValuePipe, UseGuards, } from '@nestjs/common'; import { UserGroupsService } from './user-group.service'; import { CreateUserGroupDto } from './dto/create-user-group.dto'; import { UpdateUserGroupDto } from './dto/update-user-group.dto'; import { QueryUserGroupDto } from './dto/query-user-group.dto'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { Roles } from '../auth/roles.decorator'; import { Role } from '../auth/role.enum'; import { RolesGuard } from '../auth/roles.guard'; @Controller('user-group') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(Role.Admin) export class UserGroupsController { constructor(private readonly userGroupsService: UserGroupsService) {} @Post() create(@Body() createUserGroupDto: CreateUserGroupDto) { return this.userGroupsService.create(createUserGroupDto); } @Get() findAll(@Query() queryParams: QueryUserGroupDto) { return this.userGroupsService.findAll(queryParams); } @Get('search') search( @Query('q') term: string, @Query('page', new DefaultValuePipe(1), ParseIntPipe) page: number, @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number, ) { return this.userGroupsService.search(term, { page, limit }); } @Get(':id') findOne(@Param('id', ParseIntPipe) id: number) { return this.userGroupsService.findOne(id); } @Patch(':id') update(@Param('id', ParseIntPipe) id: number, @Body() updateUserGroupDto: UpdateUserGroupDto) { return this.userGroupsService.update(id, updateUserGroupDto); } @Delete(':id') remove(@Param('id', ParseIntPipe) id: number) { return this.userGroupsService.remove(id); } }