dvbooking/server/src/recurrence-rule/recurrence-rules.controller.ts
2025-11-20 15:56:13 +01:00

63 lines
1.8 KiB
TypeScript

import {
Controller,
Get,
Post,
Body,
Patch,
Param,
Delete,
Query,
ParseIntPipe,
DefaultValuePipe,
UseGuards,
} from '@nestjs/common';
import { RecurrenceRulesService } from './recurrence-rules.service';
import { CreateRecurrenceRuleDto } from './dto/create-recurrence-rule.dto';
import { UpdateRecurrenceRuleDto } from './dto/update-recurrence-rule.dto';
import { QueryRecurrenceRuleDto } from './dto/query-recurrence-rule.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('recurrence-rules')
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles(Role.Admin)
export class RecurrenceRulesController {
constructor(private readonly recurrenceRulesService: RecurrenceRulesService) {}
@Post()
create(@Body() createRecurrenceRuleDto: CreateRecurrenceRuleDto) {
return this.recurrenceRulesService.create(createRecurrenceRuleDto);
}
@Get()
findAll(@Query() queryParams: QueryRecurrenceRuleDto) {
return this.recurrenceRulesService.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.recurrenceRulesService.search(term, { page, limit });
}
@Get(':id')
findOne(@Param('id', ParseIntPipe) id: number) {
return this.recurrenceRulesService.findOne(id);
}
@Patch(':id')
update(@Param('id', ParseIntPipe) id: number, @Body() updateRecurrenceRuleDto: UpdateRecurrenceRuleDto) {
return this.recurrenceRulesService.update(id, updateRecurrenceRuleDto);
}
@Delete(':id')
remove(@Param('id', ParseIntPipe) id: number) {
return this.recurrenceRulesService.remove(id);
}
}