-- 005_event_participation_unique_constraints.sql -- Composite UNIQUE constraints on the event-participation collections. -- -- Same rationale as 004: Directus's `is_unique` flag is single-column only; -- composite uniqueness lives in db-init/ because the snapshot YAML format -- does not capture multi-column unique constraints. -- -- Owned by: task 1.5 (event-participation collections). ALTER TABLE events ADD CONSTRAINT events_org_slug_unique UNIQUE (organization_id, slug); ALTER TABLE classes ADD CONSTRAINT classes_event_code_unique UNIQUE (event_id, code); ALTER TABLE entries ADD CONSTRAINT entries_event_race_number_unique UNIQUE (event_id, race_number); ALTER TABLE entry_crew ADD CONSTRAINT entry_crew_entry_user_unique UNIQUE (entry_id, user_id); ALTER TABLE entry_devices ADD CONSTRAINT entry_devices_entry_device_unique UNIQUE (entry_id, device_id); -- ------------------------------------------------------------------------- -- Assertion block: verify all five constraints landed. -- ------------------------------------------------------------------------- DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'events_org_slug_unique' ) THEN RAISE EXCEPTION 'events composite unique constraint (org, slug) missing'; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'classes_event_code_unique' ) THEN RAISE EXCEPTION 'classes composite unique constraint (event, code) missing'; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'entries_event_race_number_unique' ) THEN RAISE EXCEPTION 'entries composite unique constraint (event, race_number) missing'; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'entry_crew_entry_user_unique' ) THEN RAISE EXCEPTION 'entry_crew composite unique constraint (entry, user) missing'; END IF; IF NOT EXISTS ( SELECT 1 FROM pg_constraint WHERE conname = 'entry_devices_entry_device_unique' ) THEN RAISE EXCEPTION 'entry_devices composite unique constraint (entry, device) missing'; END IF; END $$;