refactor: update SQL migration to use conditional blocks for dropping and adding columns in servizio and users_anagrafica tables

This commit is contained in:
Marco Pedone 2025-11-14 18:09:11 +01:00
parent aea90d93ba
commit 63397923c4

View file

@ -1,4 +1,4 @@
---Remove document references from servizio table -- Remove document references from servizio table
DO $$ BEGIN DO $$ BEGIN
IF EXISTS ( IF EXISTS (
SELECT 1 FROM pg_constraint SELECT 1 FROM pg_constraint
@ -19,40 +19,76 @@ DO $$ BEGIN
END IF; END IF;
END $$; END $$;
ALTER TABLE IF EXISTS public.servizio DO $$ BEGIN
DROP COLUMN IF EXISTS doc_personale_fronte_ref; IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'servizio'
AND column_name = 'doc_personale_fronte_ref'
) THEN
ALTER TABLE public.servizio DROP COLUMN doc_personale_fronte_ref;
END IF;
END $$;
ALTER TABLE IF EXISTS public.servizio DO $$ BEGIN
DROP COLUMN IF EXISTS doc_personale_retro_ref; IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'servizio'
AND column_name = 'doc_personale_retro_ref'
) THEN
ALTER TABLE public.servizio DROP COLUMN doc_personale_retro_ref;
END IF;
END $$;
---Add document references to users_anagrafica table -- Add document references to users_anagrafica table
ALTER TABLE IF EXISTS public.users_anagrafica DO $$ BEGIN
ADD COLUMN doc_personale_fronte_ref UUID; IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'users_anagrafica'
AND column_name = 'doc_personale_fronte_ref'
) THEN
ALTER TABLE public.users_anagrafica ADD COLUMN doc_personale_fronte_ref UUID;
END IF;
END $$;
ALTER TABLE IF EXISTS public.users_anagrafica DO $$ BEGIN
ADD COLUMN doc_personale_retro_ref UUID; IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'users_anagrafica'
AND column_name = 'doc_personale_retro_ref'
) THEN
ALTER TABLE public.users_anagrafica ADD COLUMN doc_personale_retro_ref UUID;
END IF;
END $$;
DO $$ -- Add foreign key constraints
BEGIN DO $$ BEGIN
IF NOT EXISTS ( IF NOT EXISTS (
SELECT 1 FROM pg_constraint SELECT 1 FROM pg_constraint
WHERE conname = 'anagrafica_doc_fronte' WHERE conname = 'anagrafica_doc_fronte'
AND conrelid = 'public.users_anagrafica'::regclass AND conrelid = 'public.users_anagrafica'::regclass
) THEN ) THEN
ALTER TABLE public.users_anagrafica ALTER TABLE public.users_anagrafica
ADD CONSTRAINT anagrafica_doc_fronte FOREIGN KEY (doc_personale_fronte_ref) ADD CONSTRAINT anagrafica_doc_fronte
FOREIGN KEY (doc_personale_fronte_ref)
REFERENCES public.users_storage (user_storage_id) REFERENCES public.users_storage (user_storage_id)
MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL; ON UPDATE CASCADE ON DELETE SET NULL;
END IF; END IF;
END $$;
DO $$ BEGIN
IF NOT EXISTS ( IF NOT EXISTS (
SELECT 1 FROM pg_constraint SELECT 1 FROM pg_constraint
WHERE conname = 'anagrafica_doc_retro' WHERE conname = 'anagrafica_doc_retro'
AND conrelid = 'public.users_anagrafica'::regclass AND conrelid = 'public.users_anagrafica'::regclass
) THEN ) THEN
ALTER TABLE public.users_anagrafica ALTER TABLE public.users_anagrafica
ADD CONSTRAINT anagrafica_doc_retro FOREIGN KEY (doc_personale_retro_ref) ADD CONSTRAINT anagrafica_doc_retro
FOREIGN KEY (doc_personale_retro_ref)
REFERENCES public.users_storage (user_storage_id) REFERENCES public.users_storage (user_storage_id)
MATCH SIMPLE ON UPDATE CASCADE ON DELETE SET NULL; ON UPDATE CASCADE ON DELETE SET NULL;
END IF; END IF;
END $$; END $$;