# HG changeset patch # User jbe # Date 1498488354 -7200 # Node ID 1bc3dfe5823ef118f8a037926dc2141fd86f2f5e # Parent aa261389c993ab1e7a74072be01a195df0963a73 Implementation of unit/area/policy event triggers diff -r aa261389c993 -r 1bc3dfe5823e core.sql --- a/core.sql Mon Jun 26 16:20:36 2017 +0200 +++ b/core.sql Mon Jun 26 16:45:54 2017 +0200 @@ -1785,7 +1785,21 @@ CREATE FUNCTION "write_event_unit_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'unit_removed'; + ELSE + "event_v" := 'unit_updated'; + END IF; + ELSE + "event_v" := 'unit_created'; + END IF; + INSERT INTO "event" ("event", "unit_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$; @@ -1800,7 +1814,21 @@ CREATE FUNCTION "write_event_area_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'area_removed'; + ELSE + "event_v" := 'area_updated'; + END IF; + ELSE + "event_v" := 'area_created'; + END IF; + INSERT INTO "event" ("event", "area_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$; @@ -1815,7 +1843,21 @@ CREATE FUNCTION "write_event_policy_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'policy_removed'; + ELSE + "event_v" := 'policy_updated'; + END IF; + ELSE + "event_v" := 'policy_created'; + END IF; + INSERT INTO "event" ("event", "policy_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$; diff -r aa261389c993 -r 1bc3dfe5823e update/core-update.v3.2.2-v4.0.0.sql --- a/update/core-update.v3.2.2-v4.0.0.sql Mon Jun 26 16:20:36 2017 +0200 +++ b/update/core-update.v3.2.2-v4.0.0.sql Mon Jun 26 16:45:54 2017 +0200 @@ -944,7 +944,21 @@ CREATE FUNCTION "write_event_unit_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'unit_removed'; + ELSE + "event_v" := 'unit_updated'; + END IF; + ELSE + "event_v" := 'unit_created'; + END IF; + INSERT INTO "event" ("event", "unit_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$; @@ -959,7 +973,21 @@ CREATE FUNCTION "write_event_area_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'area_removed'; + ELSE + "event_v" := 'area_updated'; + END IF; + ELSE + "event_v" := 'area_created'; + END IF; + INSERT INTO "event" ("event", "area_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$; @@ -974,7 +1002,21 @@ CREATE FUNCTION "write_event_policy_trigger"() RETURNS TRIGGER LANGUAGE 'plpgsql' VOLATILE AS $$ + DECLARE + "event_v" "event_type"; BEGIN + IF TG_OP = 'UPDATE' THEN + IF OLD."active" = FALSE AND NEW."active" = FALSE THEN + RETURN NULL; + ELSIF OLD."active" = TRUE AND NEW."active" = FALSE THEN + "event_v" := 'policy_removed'; + ELSE + "event_v" := 'policy_updated'; + END IF; + ELSE + "event_v" := 'policy_created'; + END IF; + INSERT INTO "event" ("event", "policy_id") VALUES ("event_v", NEW."id"); RETURN NULL; END; $$;