Changes
Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
co-authored by
renee-png
parent
8c5dbb472e
commit
183996966d
@@ -0,0 +1,37 @@
|
||||
|
||||
-- Replace partial unique indexes on external_id with full unique constraints
|
||||
-- so PostgREST .upsert(onConflict: 'external_id') can match them.
|
||||
-- Postgres allows multiple NULLs in a UNIQUE constraint, so partial index is unnecessary.
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
t text;
|
||||
tables text[] := ARRAY[
|
||||
'cases','clients','contacts','homeowners','tasks','events','call_logs',
|
||||
'expenses','invoices','time_entries','status_updates','documents'
|
||||
];
|
||||
BEGIN
|
||||
FOREACH t IN ARRAY tables LOOP
|
||||
-- Drop the old partial unique index if present
|
||||
EXECUTE format('DROP INDEX IF EXISTS public.%I', t || '_external_id_uidx');
|
||||
-- Drop legacy duplicate if present
|
||||
EXECUTE format('DROP INDEX IF EXISTS public.%I', t || '_external_id_key');
|
||||
|
||||
-- Add a real UNIQUE constraint (only if not already present)
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint c
|
||||
JOIN pg_class r ON r.oid = c.conrelid
|
||||
JOIN pg_namespace n ON n.oid = r.relnamespace
|
||||
WHERE n.nspname = 'public'
|
||||
AND r.relname = t
|
||||
AND c.contype = 'u'
|
||||
AND c.conname = t || '_external_id_unique'
|
||||
) THEN
|
||||
EXECUTE format(
|
||||
'ALTER TABLE public.%I ADD CONSTRAINT %I UNIQUE (external_id)',
|
||||
t, t || '_external_id_unique'
|
||||
);
|
||||
END IF;
|
||||
END LOOP;
|
||||
END $$;
|
||||
Reference in New Issue
Block a user