From 8654fa9676fe01c54b008f1c610c25597986dd59 Mon Sep 17 00:00:00 2001 From: Regalijan Date: Mon, 3 Feb 2025 18:29:54 -0500 Subject: [PATCH] Stop double accumulation server-side --- functions/api/events-team/events/[id]/complete.ts | 12 ++++++++++++ functions/api/events-team/events/[id]/forgotten.ts | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/functions/api/events-team/events/[id]/complete.ts b/functions/api/events-team/events/[id]/complete.ts index c2517a8..ce12d2c 100644 --- a/functions/api/events-team/events/[id]/complete.ts +++ b/functions/api/events-team/events/[id]/complete.ts @@ -5,6 +5,18 @@ export async function onRequestPost(context: RequestContext) { const { event } = context.data; try { + const completionTimeRow = await D1.prepare( + "SELECT performed_at FROM events WHERE id = ?;", + ) + .bind(event.id) + .first(); + + if (typeof completionTimeRow?.performed_at !== "number") + return jsonError( + "The event is already marked as complete or forgotten", + 400, + ); + await D1.batch([ D1.prepare("UPDATE events SET performed_at = ? WHERE id = ?;").bind( Date.now(), diff --git a/functions/api/events-team/events/[id]/forgotten.ts b/functions/api/events-team/events/[id]/forgotten.ts index 11f83e4..935fa81 100644 --- a/functions/api/events-team/events/[id]/forgotten.ts +++ b/functions/api/events-team/events/[id]/forgotten.ts @@ -5,6 +5,15 @@ export async function onRequestPost(context: RequestContext) { const { event } = context.data; try { + const row = await D1.prepare( + "SELECT performed_at FROM events WHERE id = ?;", + ) + .bind(event.id) + .first(); + + if (typeof row?.performed_at !== "number") + return jsonError("Event already marked as completed or forgotten", 400); + await D1.batch([ D1.prepare("UPDATE events SET performed_at = 0 WHERE id = ?;").bind( event.id,