diff --git a/src/main.ts b/src/main.ts index 4eae376..6ae2de2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,3 +1,4 @@ +import { ValidationPipe } from '@nestjs/common' import { ConfigService } from '@nestjs/config' import { NestFactory } from '@nestjs/core' @@ -9,6 +10,7 @@ async function bootstrap() { const config = app.get(ConfigService) const port = config.get('PORT', 3000) app.enableShutdownHooks() + app.useGlobalPipes(new ValidationPipe()) app.useGlobalInterceptors(new CustomResponseTransformInterceptor()) await app.listen(port, () => console.log(`Listening on port ${port}`)) } diff --git a/src/reservations/controller.ts b/src/reservations/controller.ts index 205728a..2241fdc 100644 --- a/src/reservations/controller.ts +++ b/src/reservations/controller.ts @@ -7,7 +7,6 @@ import { Get, Inject, Param, - ParseBoolPipe, Post, Query, UseInterceptors, @@ -15,14 +14,26 @@ import { ValidationPipe, } from '@nestjs/common' import { Queue } from 'bull' +import { Transform } from 'class-transformer' +import { IsBoolean, IsOptional } from 'class-validator' import { Dayjs } from 'dayjs' -import { ParseDayjsPipe } from 'src/common/pipes/parseDayjsPipe' import { LoggerService } from '../logger/service.logger' import { RESERVATIONS_QUEUE_NAME } from './config' import { Reservation } from './entity' import { ReservationsService } from './service' +export class GetReservationsQueryParams { + @IsOptional() + @Transform(() => Dayjs) + date?: Dayjs + + @IsOptional() + @IsBoolean() + @Transform(({ value }) => value === 'true') + readonly schedulable?: boolean +} + @Controller('reservations') @UseInterceptors(ClassSerializerInterceptor) export class ReservationsController { @@ -38,11 +49,8 @@ export class ReservationsController { ) {} @Get() - getReservations( - @Query('date', ParseDayjsPipe) date?: Dayjs, - @Query('schedulable', ParseBoolPipe) schedulable?: boolean, - ) { - console.log(schedulable) + getReservations(@Query() params: GetReservationsQueryParams) { + const { schedulable, date } = params if (schedulable) { return this.reservationsService.getSchedulable() } diff --git a/src/waitingList/module.ts b/src/waitingList/module.ts index 8f61aa3..2e2db5b 100644 --- a/src/waitingList/module.ts +++ b/src/waitingList/module.ts @@ -4,6 +4,7 @@ import { Module } from '@nestjs/common' import { EMAILS_QUEUE_NAME } from '../email/config' import { EmailModule } from '../email/module' import { LoggerModule } from '../logger/module' +import { NtfyModule } from '../ntfy/module' import { RESERVATIONS_QUEUE_NAME } from '../reservations/config' import { ReservationsModule } from '../reservations/module' import { WaitingListService } from './service' @@ -15,6 +16,7 @@ import { WaitingListService } from './service' BullModule.registerQueue({ name: EMAILS_QUEUE_NAME }), BullModule.registerQueue({ name: RESERVATIONS_QUEUE_NAME }), EmailModule, + NtfyModule, ], providers: [WaitingListService], exports: [WaitingListService],