Skip to content

Commit 20ef30f

Browse files
committed
graphite recco: Atomic delete
1 parent 31ba7ca commit 20ef30f

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

packages/database/supabase/migrations/20260507150056_database_secret_tokens.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ v_payload JSONB;
2424
v_one_time_use BOOLEAN;
2525
BEGIN
2626
DELETE FROM public.secret_token WHERE expiry_date < now();
27-
SELECT payload, one_time_use INTO v_payload, v_one_time_use FROM public.secret_token WHERE id=token;
28-
IF v_one_time_use = true THEN
29-
DELETE FROM public.secret_token WHERE id=token;
27+
DELETE FROM public.secret_token WHERE id=token AND one_time_use = true RETURNING payload INTO v_payload;
28+
IF v_payload IS NULL THEN
29+
SELECT payload INTO v_payload FROM public.secret_token WHERE id=token;
3030
END IF;
3131
RETURN v_payload;
3232
END;

packages/database/supabase/schemas/secret_tokens.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ v_payload JSONB;
2424
v_one_time_use BOOLEAN;
2525
BEGIN
2626
DELETE FROM public.secret_token WHERE expiry_date < now();
27-
SELECT payload, one_time_use INTO v_payload, v_one_time_use FROM public.secret_token WHERE id=token;
28-
IF v_one_time_use = true THEN
29-
DELETE FROM public.secret_token WHERE id=token;
27+
DELETE FROM public.secret_token WHERE id=token AND one_time_use = true RETURNING payload INTO v_payload;
28+
IF v_payload IS NULL THEN
29+
SELECT payload INTO v_payload FROM public.secret_token WHERE id=token;
3030
END IF;
3131
RETURN v_payload;
3232
END;

0 commit comments

Comments
 (0)