dvbooking/server/src/user-group/user-group.controller.ts
2025-11-20 15:40:24 +01:00

63 lines
1.7 KiB
TypeScript

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);
}
}