From b1d1fc4b15082f92a1c6456722c8f682dce5c0c9 Mon Sep 17 00:00:00 2001 From: Rogan Hamby Date: Thu, 11 Jun 2020 11:35:09 -0400 Subject: [PATCH] a quality of life function to make it easier to modify the fixed fields in a biblio.record_entry record --- sql/base/21-fixed-fields.sql | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) diff --git a/sql/base/21-fixed-fields.sql b/sql/base/21-fixed-fields.sql index 2287fcd..b771c05 100644 --- a/sql/base/21-fixed-fields.sql +++ b/sql/base/21-fixed-fields.sql @@ -473,3 +473,38 @@ my $zzs_str; return $marc->as_xml_record; $function$; +DROP FUNCTION IF EXISTS migration_tools.modify_biblio_fixed_fields (BIGINT,TEXT); +CREATE OR REPLACE FUNCTION migration_tools.modify_biblio_fixed_fields (bib_id BIGINT, xcode TEXT) + RETURNS BOOLEAN + LANGUAGE plpgsql +AS $function$ +DECLARE + r TEXT; + xitype CHAR(1); + xiform CHAR(1); + xphy CHAR(1); + xphyv CHAR(1); + xphyp SMALLINT; + xbiblevel CHAR(1); + xiform_exclude CHAR(1)[]; + xsrform_exclude CHAR(1)[]; + yiform_exclude TEXT; + ysrform_exclude TEXT; +BEGIN + SELECT itype, iform, phy, phyv, phyp, biblevel, iform_exclude, srform_exclude FROM migration_tools.search_format_map WHERE code = xcode + INTO xitype, xiform, xphy, xphyv, xphyp, xbiblevel, xiform_exclude, xsrform_exclude; + IF xiform_exclude IS NOT NULL THEN + yiform_exclude := ARRAY_TO_STRING(xiform_exclude,','); + ELSE + yiform_exclude := ''; + END IF; + IF xsrform_exclude IS NOT NULL THEN + ysrform_exclude := ARRAY_TO_STRING(ysrform_exclude,','); + ELSE + ysrform_exclude := ''; + END IF; + SELECT migration_tools.modify_fixed_fields(marc,xcode,xitype,xiform,xphy,xphyv,xphyp,xbiblevel,yiform_exclude,ysrform_exclude) FROM biblio.record_entry WHERE id = bib_id INTO r; + UPDATE biblio.record_entry SET marc = r WHERE id = bib_id; + RETURN TRUE; +END; +$function$; -- 1.7.2.5