]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0623.schema.YAOUS-log-table.sql
LP#1643709: Stamping upgrade scripts
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0623.schema.YAOUS-log-table.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0623', :eg_version);
4
5
6 CREATE TABLE config.org_unit_setting_type_log (
7     id              BIGSERIAL   PRIMARY KEY,
8     date_applied    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
9     org             INT         REFERENCES actor.org_unit (id),
10     original_value  TEXT,
11     new_value       TEXT,
12     field_name      TEXT      REFERENCES config.org_unit_setting_type (name)
13 );
14
15 -- Log each change in oust to oustl, so admins can see what they messed up if someting stops working.
16 CREATE OR REPLACE FUNCTION ous_change_log() RETURNS TRIGGER AS $ous_change_log$
17     DECLARE
18     original TEXT;
19     BEGIN
20         -- Check for which setting is being updated, and log it.
21         SELECT INTO original value FROM actor.org_unit_setting WHERE name = NEW.name AND org_unit = NEW.org_unit;
22                 
23         INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (NEW.org_unit, original, NEW.value, NEW.name);
24         
25         RETURN NEW;
26     END;
27 $ous_change_log$ LANGUAGE plpgsql;    
28
29 CREATE TRIGGER log_ous_change
30     BEFORE INSERT OR UPDATE ON actor.org_unit_setting
31     FOR EACH ROW EXECUTE PROCEDURE ous_change_log();
32
33 CREATE OR REPLACE FUNCTION ous_delete_log() RETURNS TRIGGER AS $ous_delete_log$
34     DECLARE
35     original TEXT;
36     BEGIN
37         -- Check for which setting is being updated, and log it.
38         SELECT INTO original value FROM actor.org_unit_setting WHERE name = OLD.name AND org_unit = OLD.org_unit;
39                 
40         INSERT INTO config.org_unit_setting_type_log (org,original_value,new_value,field_name) VALUES (OLD.org_unit, original, 'null', OLD.name);
41         
42         RETURN OLD;
43     END;
44 $ous_delete_log$ LANGUAGE plpgsql;    
45
46 CREATE TRIGGER log_ous_del
47     BEFORE DELETE ON actor.org_unit_setting
48     FOR EACH ROW EXECUTE PROCEDURE ous_delete_log();
49
50 COMMIT;