From d23358e5d8cab9410ec9bdc802933aaa25fd1afb Mon Sep 17 00:00:00 2001 From: Collin Duncan <3679940+cgduncan7@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:46:25 +0200 Subject: [PATCH] Making screenshots on error only happen in non-time sensitive flows and switching back to using a queue --- src/reservations/cron.ts | 15 ++++++--------- src/reservations/worker.ts | 18 ++++++++++++++---- src/runner/baanreserveren/service.ts | 14 ++++++++++---- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/reservations/cron.ts b/src/reservations/cron.ts index 41377c1..6c0286c 100644 --- a/src/reservations/cron.ts +++ b/src/reservations/cron.ts @@ -71,15 +71,12 @@ export class ReservationsCronService { ) this.loggerService.debug(`It's go-time`) - - for (const res of reservationsToPerform) { - await this.brService.performReservation(res).catch( - async () => - await this.reservationsQueue.add(res, { - attempts: Math.max(DAILY_RESERVATIONS_ATTEMPTS - 1, 1), - }), - ) - } + await this.reservationsQueue.addBulk( + reservationsToPerform.map((res) => ({ + data: res, + opts: { attempts: DAILY_RESERVATIONS_ATTEMPTS }, + })), + ) } else { this.loggerService.debug('Monitoring reservations') await this.brService.monitorCourtReservations(dayjs().add(7, 'day')) diff --git a/src/reservations/worker.ts b/src/reservations/worker.ts index deaa33e..1f1bdc8 100644 --- a/src/reservations/worker.ts +++ b/src/reservations/worker.ts @@ -43,13 +43,14 @@ export class ReservationsWorker { reservation.dateRangeStart, reservation.dateRangeEnd, ) - await this.performReservation(reservation, job.attemptsMade) + await this.performReservation(reservation, job.attemptsMade, false) } private async handleReservationErrors( error: Error, reservation: Reservation, attemptsMade: number, + timeSensitive = true, ) { const shouldWaitlist = error instanceof NoCourtAvailableError if (shouldWaitlist) { @@ -67,13 +68,17 @@ export class ReservationsWorker { reservation.dateRangeStart, reservation.dateRangeEnd, ) - await this.addReservationToWaitList(reservation) + await this.addReservationToWaitList(reservation, timeSensitive) } else { throw error } } - async performReservation(reservation: Reservation, attemptsMade: number) { + async performReservation( + reservation: Reservation, + attemptsMade: number, + timeSensitive = true, + ) { try { await this.brService.performReservation(reservation) await this.reservationsService.deleteById(reservation.id) @@ -82,14 +87,19 @@ export class ReservationsWorker { error as Error, reservation, attemptsMade, + timeSensitive, ) } } - async addReservationToWaitList(reservation: Reservation) { + async addReservationToWaitList( + reservation: Reservation, + timeSensitive = true, + ) { try { const waitingListId = await this.brService.addReservationToWaitList( reservation, + timeSensitive, ) await this.reservationsService.update(reservation.id, { waitListed: true, diff --git a/src/runner/baanreserveren/service.ts b/src/runner/baanreserveren/service.ts index 3a1aa61..aa86f3d 100644 --- a/src/runner/baanreserveren/service.ts +++ b/src/runner/baanreserveren/service.ts @@ -565,7 +565,10 @@ export class BaanReserverenService { return courtStatuses } - public async performReservation(reservation: Reservation) { + public async performReservation( + reservation: Reservation, + timeSensitive = true, + ) { try { await this.init() await this.navigateToDay(reservation.dateRangeStart) @@ -575,12 +578,15 @@ export class BaanReserverenService { await this.selectOpponents(reservation.opponents) await this.confirmReservation() } catch (error: unknown) { - await this.handleError() + if (!timeSensitive) await this.handleError() throw error } } - public async addReservationToWaitList(reservation: Reservation) { + public async addReservationToWaitList( + reservation: Reservation, + timeSensitive = true, + ) { try { await this.init() await this.navigateToWaitingList() @@ -603,7 +609,7 @@ export class BaanReserverenService { return waitingListId } catch (error: unknown) { - await this.handleError() + if (!timeSensitive) await this.handleError() throw error } }