END;
$$ LANGUAGE PLPGSQL STRICT VOLATILE;
+-- example: SELECT * FROM migration_tools.duplicate_templates(3,'{5,6}');
+CREATE OR REPLACE FUNCTION migration_tools.duplicate_templates (INTEGER, INTEGER[]) RETURNS VOID AS $$
+ DECLARE
+ org ALIAS FOR $1;
+ target_event_defs ALIAS FOR $2;
+ BEGIN
+ DROP TABLE IF EXISTS new_atevdefs;
+ CREATE TEMP TABLE new_atevdefs (atevdef INTEGER);
+ FOR i IN array_lower(target_event_defs,1) .. array_upper(target_event_defs,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'
+ ,org
+ ,name || ' (clone of '||target_event_defs[i]||')'
+ ,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_defs[i]
+ ;
+ 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_defs[i]
+ ;
+ 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_defs[i]
+ ;
+ END LOOP;
+ RAISE INFO '-- UPDATE action_trigger.event_definition SET active = TRUE WHERE id in (%);', (SELECT array_to_string(array_agg(atevdef),',') from new_atevdefs);
+ END;
+$$ LANGUAGE PLPGSQL STRICT VOLATILE;
+
+CREATE OR REPLACE FUNCTION migration_tools.reset_event (BIGINT) RETURNS VOID AS $$
+ UPDATE
+ action_trigger.event
+ SET
+ start_time = NULL
+ ,update_time = NULL
+ ,complete_time = NULL
+ ,update_process = NULL
+ ,state = 'pending'
+ ,template_output = NULL
+ ,error_output = NULL
+ ,async_output = NULL
+ WHERE
+ id = $1;
+$$ LANGUAGE SQL;
+
CREATE OR REPLACE FUNCTION migration_tools.get_marc_leader (TEXT) RETURNS TEXT AS $$
my ($marcxml) = @_;
if (!defined $ind2) { next; }
if ($ind2 ne '0') { next; }
if (!defined $sfu) { next; }
- if ($sfu =~ m/$matching_u_text/) {
+ if ($sfu =~ m/$matching_u_text/ or $matching_u_text eq 'pineapple') {
$field->add_subfields( '9' => $new_9_to_set );
last;
}
EXECUTE 'SELECT marc FROM ' || bib_table || ' WHERE id = ' || bib_id INTO source_xml;
- SELECT add_sf9(source_xml, target_u_text, sf9_text) INTO new_xml;
+ SELECT migration_tools.add_sf9(source_xml, target_u_text, sf9_text) INTO new_xml;
r = FALSE;
new_xml = '$_$' || new_xml || '$_$';
END
$function$;
+DROP FUNCTION IF EXISTS migration_tools.btrim_columns(TEXT,TEXT);
+CREATE OR REPLACE FUNCTION migration_tools.btrim_columns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
+ LANGUAGE plpgsql
+AS $function$
+DECLARE
+ c_name TEXT;
+BEGIN
+
+ FOR c_name IN SELECT column_name FROM information_schema.columns WHERE
+ table_name = t_name
+ AND table_schema = s_name
+ AND (data_type='text' OR data_type='character varying')
+ LOOP
+ EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = BTRIM(' || c_name || ')');
+ END LOOP;
+
+ RETURN TRUE;
+END
+$function$;
+
DROP FUNCTION IF EXISTS migration_tools.null_empty_lcolumns(TEXT,TEXT);
CREATE OR REPLACE FUNCTION migration_tools.null_empty_lcolumns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
LANGUAGE plpgsql
END
$function$;
+DROP FUNCTION IF EXISTS migration_tools.null_empty_columns(TEXT,TEXT);
+CREATE OR REPLACE FUNCTION migration_tools.null_empty_columns(s_name TEXT, t_name TEXT) RETURNS BOOLEAN
+ LANGUAGE plpgsql
+AS $function$
+DECLARE
+ c_name TEXT;
+BEGIN
+
+ FOR c_name IN SELECT column_name FROM information_schema.columns WHERE
+ table_name = t_name
+ AND table_schema = s_name
+ AND (data_type='text' OR data_type='character varying')
+ LOOP
+ EXECUTE FORMAT('UPDATE ' || s_name || '.' || t_name || ' SET ' || c_name || ' = NULL WHERE ' || c_name || ' = '''' ');
+ END LOOP;
+
+ RETURN TRUE;
+END
+$function$;