]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0393.schema.perm-id-change-i18n-protection.sql
LP#1835085: stamp DB update
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0393.schema.perm-id-change-i18n-protection.sql
1 BEGIN;
2
3 INSERT INTO config.upgrade_log (version) VALUES ('0393'); -- miker
4
5 CREATE OR REPLACE FUNCTION oils_i18n_update_apply(old_ident TEXT, new_ident TEXT, hint TEXT) RETURNS VOID AS $_$
6 BEGIN
7
8     EXECUTE $$
9         UPDATE  config.i18n_core
10           SET   identity_value = $$ || new_ident || $$ 
11           WHERE fq_field LIKE '$$ || hint || $$.%' 
12                 AND identity_value = $$ || old_ident || $$;$$;
13
14     RETURN;
15
16 END;
17 $_$ LANGUAGE PLPGSQL;
18
19 CREATE OR REPLACE FUNCTION oils_i18n_id_tracking(/* hint */) RETURNS TRIGGER AS $_$
20 BEGIN
21     PERFORM oils_i18n_update_apply( OLD.id::TEXT, NEW.id::TEXT, TG_ARGV[0]::TEXT );
22     RETURN NEW;
23 END;
24 $_$ LANGUAGE PLPGSQL;
25
26 CREATE OR REPLACE FUNCTION oils_i18n_code_tracking(/* hint */) RETURNS TRIGGER AS $_$
27 BEGIN
28     PERFORM oils_i18n_update_apply( OLD.code::TEXT, NEW.code::TEXT, TG_ARGV[0]::TEXT );
29     RETURN NEW;
30 END;
31 $_$ LANGUAGE PLPGSQL;
32
33
34 CREATE TRIGGER maintain_perm_i18n_tgr
35     AFTER UPDATE ON permission.perm_list
36     FOR EACH ROW EXECUTE PROCEDURE oils_i18n_id_tracking('ppl');
37
38 COMMIT;