mirror of
https://github.com/willchen96/mike.git
synced 2026-06-18 21:15:13 +02:00
28 lines
1.1 KiB
SQL
28 lines
1.1 KiB
SQL
-- Migration date: 2026-04-28
|
|
|
|
-- Migration: enforce one share row per (workflow, recipient email) so
|
|
-- re-sharing to the same person updates the existing row instead of
|
|
-- creating duplicates. Without this, DELETE only removes one of N copies
|
|
-- and the recipient retains access after the owner thinks they revoked.
|
|
|
|
-- Collapse any existing duplicates first, keeping the most recent row.
|
|
delete from public.workflow_shares a
|
|
using public.workflow_shares b
|
|
where a.workflow_id = b.workflow_id
|
|
and a.shared_with_email = b.shared_with_email
|
|
and a.created_at < b.created_at;
|
|
|
|
-- Add the unique constraint only if it is not already present (ADD CONSTRAINT
|
|
-- has no IF NOT EXISTS form, so re-running the bare statement would error).
|
|
do $$
|
|
begin
|
|
if not exists (
|
|
select 1 from pg_constraint
|
|
where conname = 'workflow_shares_workflow_email_unique'
|
|
and conrelid = 'public.workflow_shares'::regclass
|
|
) then
|
|
alter table public.workflow_shares
|
|
add constraint workflow_shares_workflow_email_unique
|
|
unique (workflow_id, shared_with_email);
|
|
end if;
|
|
end $$;
|