Adding endpoint to update recurring reservations

This commit is contained in:
Collin Duncan 2024-05-03 11:23:21 +02:00
parent 360acfb63b
commit feb3c4b8d0
No known key found for this signature in database
2 changed files with 53 additions and 3 deletions

View file

@ -7,6 +7,7 @@ import {
Inject, Inject,
Param, Param,
Post, Post,
Put,
Query, Query,
UseInterceptors, UseInterceptors,
} from '@nestjs/common' } from '@nestjs/common'
@ -52,6 +53,31 @@ export class CreateRecurringReservationRequest {
opponents?: CreateRecurringReservationOpponent[] opponents?: CreateRecurringReservationOpponent[]
} }
export class UpdateRecurringReservationRequest {
@IsOptional()
@IsString()
ownerId?: string
@IsOptional()
@IsEnum(DayOfWeek)
dayOfWeek?: number
@IsOptional()
@IsString()
@Matches(/[012][0-9]:[0-5][0-9]/)
timeStart?: string
@IsOptional()
@IsString()
@Matches(/[012][0-9]:[0-5][0-9]/)
timeEnd?: string
@IsOptional()
@IsArray()
@ValidateNested()
opponents?: CreateRecurringReservationOpponent[]
}
@Controller('recurring-reservations') @Controller('recurring-reservations')
@UseInterceptors(ClassSerializerInterceptor) @UseInterceptors(ClassSerializerInterceptor)
export class RecurringReservationsController { export class RecurringReservationsController {
@ -69,18 +95,29 @@ export class RecurringReservationsController {
} }
@Get(':id') @Get(':id')
getReservationById(@Param('id') id: string) { getRecurringReservationById(@Param('id') id: string) {
return this.recurringReservationsService.getById(id) return this.recurringReservationsService.getById(id)
} }
@Post() @Post()
async createReservation(@Body() req: CreateRecurringReservationRequest) { async createRecurringReservation(
@Body() req: CreateRecurringReservationRequest,
) {
await this.recurringReservationsService.create(req) await this.recurringReservationsService.create(req)
return 'Recurring reservation created' return 'Recurring reservation created'
} }
@Put(':id')
async updateRecurringReservation(
@Param('id') id: string,
@Body() req: UpdateRecurringReservationRequest,
) {
await this.recurringReservationsService.update(id, req)
return 'Recurring reservation updated'
}
@Delete(':id') @Delete(':id')
async deleteReservationById(@Param('id') id: string) { async deleteRecurringReservationById(@Param('id') id: string) {
await this.recurringReservationsService.deleteById(id) await this.recurringReservationsService.deleteById(id)
return 'Recurring reservation deleted' return 'Recurring reservation deleted'
} }

View file

@ -58,6 +58,19 @@ export class RecurringReservationsService {
return this.reservationsService.create(reservation) return this.reservationsService.create(reservation)
} }
async update(
id: string,
updateRequest: {
ownerId?: string
dayOfWeek?: DayOfWeek
timeStart?: string
timeEnd?: string
opponents?: { id: string; name: string }[]
},
) {
await this.recurringReservationsRepository.update({ id }, updateRequest)
}
async deleteById(id: string) { async deleteById(id: string) {
await this.recurringReservationsRepository.delete({ id }) await this.recurringReservationsRepository.delete({ id })
} }