From d0949fb258af7c6496af384757fe102e15b4be49 Mon Sep 17 00:00:00 2001 From: Rogan Hamby Date: Thu, 22 Mar 2018 15:12:26 -0400 Subject: [PATCH] adding upgrade script --- ....schema.set_record_status_in_leader_trigger.sql | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/upgrade/xxxx.schema.set_record_status_in_leader_trigger.sql 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; -- 2.11.0