diff --git a/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql new file mode 100644 index 000000000..a00bbd1d0 --- /dev/null +++ b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/down.sql @@ -0,0 +1,5 @@ +alter table "public"."media_analytics_detail" drop constraint "media_analytics_detail_jobid_fkey", + add constraint "media_analytics_detail_jobid_fkey" + foreign key ("jobid") + references "public"."jobs" + ("id") on update restrict on delete restrict; diff --git a/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql new file mode 100644 index 000000000..7f85c72e1 --- /dev/null +++ b/hasura/migrations/1762815418708_set_fk_public_media_analytics_detail_jobid/up.sql @@ -0,0 +1,5 @@ +alter table "public"."media_analytics_detail" drop constraint "media_analytics_detail_jobid_fkey", + add constraint "media_analytics_detail_jobid_fkey" + foreign key ("jobid") + references "public"."jobs" + ("id") on update set null on delete set null; diff --git a/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql b/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql new file mode 100644 index 000000000..845321d28 --- /dev/null +++ b/hasura/migrations/1762816491980_media_analytics_fk_trigger/down.sql @@ -0,0 +1,23 @@ +-- Could not auto-generate a down migration. +-- Please write an appropriate down migration for the SQL below: +-- CREATE OR REPLACE FUNCTION set_fk_to_null_if_invalid_media_analytics() +-- RETURNS TRIGGER AS $$ +-- BEGIN +-- -- Check if the foreign key value is not NULL +-- IF NEW.jobid IS NOT NULL THEN +-- -- Check if the corresponding record exists in the parent table +-- IF NOT EXISTS (SELECT 1 FROM jobs WHERE id = NEW.jobid) THEN +-- -- If it doesn't exist, set the foreign key to NULL +-- NEW.jobid = NULL; +-- END IF; +-- END IF; +-- +-- -- Return the (potentially modified) record to be inserted/updated +-- RETURN NEW; +-- END; +-- $$ LANGUAGE plpgsql; +-- +-- CREATE TRIGGER media_analytics_fk_null +-- BEFORE INSERT OR UPDATE ON media_analytics_detail +-- FOR EACH ROW +-- EXECUTE FUNCTION set_fk_to_null_if_invalid_media_analytics(); diff --git a/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql b/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql new file mode 100644 index 000000000..67f1f4e49 --- /dev/null +++ b/hasura/migrations/1762816491980_media_analytics_fk_trigger/up.sql @@ -0,0 +1,21 @@ +CREATE OR REPLACE FUNCTION set_fk_to_null_if_invalid_media_analytics() +RETURNS TRIGGER AS $$ +BEGIN + -- Check if the foreign key value is not NULL + IF NEW.jobid IS NOT NULL THEN + -- Check if the corresponding record exists in the parent table + IF NOT EXISTS (SELECT 1 FROM jobs WHERE id = NEW.jobid) THEN + -- If it doesn't exist, set the foreign key to NULL + NEW.jobid = NULL; + END IF; + END IF; + + -- Return the (potentially modified) record to be inserted/updated + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER media_analytics_fk_null +BEFORE INSERT OR UPDATE ON media_analytics_detail +FOR EACH ROW +EXECUTE FUNCTION set_fk_to_null_if_invalid_media_analytics();