From 7c2bca276db0deb677bfcd97e452f02229e41dec Mon Sep 17 00:00:00 2001 From: supalarry Date: Fri, 30 Aug 2024 09:46:10 +0200 Subject: [PATCH 1/2] fix: recurring booking idempotency key after cancel --- packages/features/bookings/lib/handleCancelBooking.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index ba4b60b22a37f3..e5f9e6eb4cbc8f 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -400,6 +400,7 @@ async function handler(req: CustomRequest) { status: BookingStatus.CANCELLED, cancellationReason: cancellationReason, cancelledBy: cancelledBy, + idempotencyKey: null, }, }); const allUpdatedBookings = await prisma.booking.findMany({ From 13ed616736d08d72df2d82eeccec399c1b20aa68 Mon Sep 17 00:00:00 2001 From: supalarry Date: Fri, 30 Aug 2024 12:21:09 +0200 Subject: [PATCH 2/2] refactor: move logic to updateMany of prisma middleware --- packages/features/bookings/lib/handleCancelBooking.ts | 1 - packages/prisma/extensions/booking-idempotency-key.ts | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/features/bookings/lib/handleCancelBooking.ts b/packages/features/bookings/lib/handleCancelBooking.ts index e5f9e6eb4cbc8f..ba4b60b22a37f3 100644 --- a/packages/features/bookings/lib/handleCancelBooking.ts +++ b/packages/features/bookings/lib/handleCancelBooking.ts @@ -400,7 +400,6 @@ async function handler(req: CustomRequest) { status: BookingStatus.CANCELLED, cancellationReason: cancellationReason, cancelledBy: cancelledBy, - idempotencyKey: null, }, }); const allUpdatedBookings = await prisma.booking.findMany({ diff --git a/packages/prisma/extensions/booking-idempotency-key.ts b/packages/prisma/extensions/booking-idempotency-key.ts index f108df14d26e93..7a602757ccc838 100644 --- a/packages/prisma/extensions/booking-idempotency-key.ts +++ b/packages/prisma/extensions/booking-idempotency-key.ts @@ -32,6 +32,12 @@ export function bookingIdempotencyKeyExtension() { } return query(args); }, + async updateMany({ args, query }) { + if (args.data.status === BookingStatus.CANCELLED || args.data.status === BookingStatus.REJECTED) { + args.data.idempotencyKey = null; + } + return query(args); + }, }, }, });