fix: harden booking and meeting flows

This commit is contained in:
2026-09-17 02:42:27 +02:00
parent cb30ecade9
commit 66710fc65c
42 changed files with 683 additions and 608 deletions
+17
View File
@@ -0,0 +1,17 @@
import { commitTransaction, createLocalReq, initTransaction, killTransaction, type Payload, type PayloadRequest } from "payload";
import { acquireBookingDayLock } from "./lock";
export async function withBookingTransaction<T>(payload: Payload, key: string, action: (req: PayloadRequest) => Promise<T>): Promise<T> {
const req = await createLocalReq({}, payload);
try {
if (!await initTransaction(req)) throw new Error("Booking transaction unavailable");
await acquireBookingDayLock(req, "booking-calendar");
await acquireBookingDayLock(req, key);
const result = await action(req);
await commitTransaction(req);
return result;
} catch (error) {
await killTransaction(req);
throw error;
}
}