From: Jason Etheridge Date: Thu, 5 Feb 2015 17:30:30 +0000 (-0500) Subject: Merge branch 'master' of git.esilibrary.com:migration-tools X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=90bbdcc5c8ff3b27b01fa1ff9f2ccb77a11d5b57;hp=86a0cc28aace2ea368265dd8b50e54fe748d8384 Merge branch 'master' of git.esilibrary.com:migration-tools --- diff --git a/sql/base/base.sql b/sql/base/base.sql index d546b71..aa3e990 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -2038,3 +2038,89 @@ BEGIN END $func$ LANGUAGE PLPGSQL; + +-- example: SELECT * FROM migration_tools.duplicate_template(5,'{3,4}'); +CREATE OR REPLACE FUNCTION migration_tools.duplicate_template (INTEGER, INTEGER[]) RETURNS VOID AS $$ + DECLARE + target_event_def ALIAS FOR $1; + orgs ALIAS FOR $2; + BEGIN + DROP TABLE IF EXISTS new_atevdefs; + CREATE TEMP TABLE new_atevdefs (atevdef INTEGER); + FOR i IN array_lower(orgs,1) .. array_upper(orgs,1) LOOP + INSERT INTO action_trigger.event_definition ( + active + ,owner + ,name + ,hook + ,validator + ,reactor + ,cleanup_success + ,cleanup_failure + ,delay + ,max_delay + ,usr_field + ,opt_in_setting + ,delay_field + ,group_field + ,template + ,granularity + ,repeat_delay + ) SELECT + 'f' + ,orgs[i] + ,name || ' (clone of '||target_event_def||')' + ,hook + ,validator + ,reactor + ,cleanup_success + ,cleanup_failure + ,delay + ,max_delay + ,usr_field + ,opt_in_setting + ,delay_field + ,group_field + ,template + ,granularity + ,repeat_delay + FROM + action_trigger.event_definition + WHERE + id = target_event_def + ; + RAISE INFO 'created atevdef with id = %', currval('action_trigger.event_definition_id_seq'); + INSERT INTO new_atevdefs SELECT currval('action_trigger.event_definition_id_seq'); + INSERT INTO action_trigger.environment ( + event_def + ,path + ,collector + ,label + ) SELECT + currval('action_trigger.event_definition_id_seq') + ,path + ,collector + ,label + FROM + action_trigger.environment + WHERE + event_def = target_event_def + ; + INSERT INTO action_trigger.event_params ( + event_def + ,param + ,value + ) SELECT + currval('action_trigger.event_definition_id_seq') + ,param + ,value + FROM + action_trigger.event_params + WHERE + event_def = target_event_def + ; + END LOOP; + RAISE INFO '-- UPDATE action_trigger.event_definition SET active = CASE WHEN id = % THEN FALSE ELSE TRUE END WHERE id in (%,%);', target_event_def, target_event_def, (SELECT array_to_string(array_agg(atevdef),',') from new_atevdefs); + END; +$$ LANGUAGE PLPGSQL STRICT VOLATILE; +