diff --git a/migrations/development/20230314062152-course-flavor.sql b/migrations/development/20230314062152-course-flavor.sql index 85bfe5057ff59334383b17c3482738e8b5e3c03c..5f7275e89166791dd31f4e42dd142df223ca4d73 100644 --- a/migrations/development/20230314062152-course-flavor.sql +++ b/migrations/development/20230314062152-course-flavor.sql @@ -15,7 +15,7 @@ CREATE OR REPLACE FUNCTION assign_lecturer() RETURNS TRIGGER AS $assign$ BEGIN - IF NEW.lecturer is NULL OR NEW.lecturer = '' THEN + IF NEW.lecturer is NULL THEN NEW.lecturer = (SELECT name FROM public."user" WHERE email = NEW.email); END IF; RETURN NEW; diff --git a/migrations/development/20230504193444-addonupdate-lecturer.sql b/migrations/development/20230504193444-addonupdate-lecturer.sql new file mode 100644 index 0000000000000000000000000000000000000000..bff6089a086433903d44567a2219ef1ef71d18b6 --- /dev/null +++ b/migrations/development/20230504193444-addonupdate-lecturer.sql @@ -0,0 +1,32 @@ + +-- +migrate Up + +CREATE OR REPLACE TRIGGER assign_lecturer +BEFORE INSERT OR UPDATE ON public."course" +FOR EACH ROW EXECUTE PROCEDURE assign_lecturer(); + + +-- +migrate StatementBegin +CREATE OR REPLACE FUNCTION update_lecturer() +RETURNS TRIGGER +AS $cascade$ +BEGIN + UPDATE public."course" + SET lecturer = NEW.name + WHERE email = NEW.email AND lecturer = OLD.name; + RETURN NEW; +END; +$cascade$ LANGUAGE plpgsql; +-- +migrate StatementEnd + +CREATE OR REPLACE TRIGGER update_lecturer +BEFORE UPDATE ON public."user" +FOR EACH ROW EXECUTE PROCEDURE update_lecturer(); + +-- +migrate Down + +DROP TRIGGER IF EXISTS update_lecturer ON public."user"; + +CREATE OR REPLACE TRIGGER assign_lecturer +BEFORE INSERT ON public."course" +FOR EACH ROW EXECUTE PROCEDURE assign_lecturer(); diff --git a/migrations/staging/20230314062152-course-flavor.sql b/migrations/staging/20230314062152-course-flavor.sql index 0b467420032b8253090cb862e4f12754f5ffedb6..5f7275e89166791dd31f4e42dd142df223ca4d73 100644 --- a/migrations/staging/20230314062152-course-flavor.sql +++ b/migrations/staging/20230314062152-course-flavor.sql @@ -28,7 +28,7 @@ BEFORE INSERT ON public."course" FOR EACH ROW EXECUTE PROCEDURE assign_lecturer(); -- +migrate Down -DROP TRIGGER IF EXISTS assign_lecturer ON public."course" +DROP TRIGGER IF EXISTS assign_lecturer ON public."course"; DROP FUNCTION IF EXISTS assign_lecturer(); diff --git a/migrations/staging/20230504193444-addonupdate-lecturer.sql b/migrations/staging/20230504193444-addonupdate-lecturer.sql new file mode 100644 index 0000000000000000000000000000000000000000..bff6089a086433903d44567a2219ef1ef71d18b6 --- /dev/null +++ b/migrations/staging/20230504193444-addonupdate-lecturer.sql @@ -0,0 +1,32 @@ + +-- +migrate Up + +CREATE OR REPLACE TRIGGER assign_lecturer +BEFORE INSERT OR UPDATE ON public."course" +FOR EACH ROW EXECUTE PROCEDURE assign_lecturer(); + + +-- +migrate StatementBegin +CREATE OR REPLACE FUNCTION update_lecturer() +RETURNS TRIGGER +AS $cascade$ +BEGIN + UPDATE public."course" + SET lecturer = NEW.name + WHERE email = NEW.email AND lecturer = OLD.name; + RETURN NEW; +END; +$cascade$ LANGUAGE plpgsql; +-- +migrate StatementEnd + +CREATE OR REPLACE TRIGGER update_lecturer +BEFORE UPDATE ON public."user" +FOR EACH ROW EXECUTE PROCEDURE update_lecturer(); + +-- +migrate Down + +DROP TRIGGER IF EXISTS update_lecturer ON public."user"; + +CREATE OR REPLACE TRIGGER assign_lecturer +BEFORE INSERT ON public."course" +FOR EACH ROW EXECUTE PROCEDURE assign_lecturer();