From: Rogan Hamby Date: Thu, 22 Mar 2018 19:12:26 +0000 (-0400) Subject: adding upgrade script X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Fuser%2Frogan%2Flp1387722_set_leader_delete_status;p=working%2FEvergreen.git adding upgrade script --- diff --git a/Open-ILS/src/sql/Pg/upgrade/xxxx.schema.set_record_status_in_leader_trigger.sql b/Open-ILS/src/sql/Pg/upgrade/xxxx.schema.set_record_status_in_leader_trigger.sql new file mode 100644 index 0000000000..c002297d49 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/xxxx.schema.set_record_status_in_leader_trigger.sql @@ -0,0 +1,35 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version); + +CREATE OR REPLACE FUNCTION biblio.set_record_status_in_leader() RETURNS TRIGGER AS $func$ +use strict; +use MARC::Record; +use MARC::Field; +use MARC::File::XML (BinaryEncoding => 'utf8'); +use Unicode::Normalize; + +my $c; + +if ($_TD->{event} eq 'INSERT') {$c = 'n';} +elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 't') {$c = 'd';} +elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 'f') {$c = 'c';} + +my $marc = MARC::Record->new_from_xml($_TD->{new}{marc}); +my $leader = $marc->leader(); +substr($leader,5,1) = $c; +$marc->leader($leader); + +my $marc_xml = $marc->as_xml_record(); + +$marc_xml = NFC($marc_xml); + +$_TD->{new}{marc} = $marc_xml; + +return "MODIFY"; + +$func$ LANGUAGE PLPERLU; + +CREATE TRIGGER set_record_status_in_leader BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE biblio.set_record_status_in_leader(); + +COMMIT;