From 832e9b0bc783d12babf6dd0f310a7e7fb8f78fc9 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 30 Jan 2013 15:08:47 -0500 Subject: [PATCH] Z39.50 Batch Search/Overlay : SQL / IDL * DB table for Z39.50 index field maps, which link Z39 search fields to indexed bib data via metabib fields and record attributes (svf) * Seed data for Z39.50 batch search org unit settings ** cat.z3950.batch.max_parallel ** cat.z3950.batch.max_results * Stock seed data for config.z3950_index_field_map entries Signed-off-by: Bill Erickson --- Open-ILS/examples/fm_IDL.xml | 28 ++++++++++ .../XXXX.schema.z39-batch-fetch-overlay.sql | 53 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.z39-batch-fetch-overlay.sql diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index 122e04486a..8e69bbd875 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -966,6 +966,34 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.z39-batch-fetch-overlay.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.z39-batch-fetch-overlay.sql new file mode 100644 index 0000000000..5e65faf348 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.z39-batch-fetch-overlay.sql @@ -0,0 +1,53 @@ +BEGIN; + +-- TODO version check + +CREATE OR REPLACE FUNCTION + evergreen.z3950_name_is_valid(TEXT) RETURNS BOOLEAN AS $func$ + SELECT EXISTS (SELECT 1 FROM config.z3950_attr WHERE name = $1); +$func$ LANGUAGE SQL STRICT IMMUTABLE; + + +CREATE TABLE config.z3950_index_field_map ( + id SERIAL PRIMARY KEY, + label TEXT NOT NULL, -- i18n + metabib_field INTEGER REFERENCES config.metabib_field(id), + record_attr TEXT REFERENCES config.record_attr_definition(name), + z3950_attr INTEGER REFERENCES config.z3950_attr(id), + z3950_attr_type TEXT,-- REFERENCES config.z3950_attr(name) + CONSTRAINT metabib_field_or_record_attr CHECK ( + metabib_field IS NOT NULL OR + record_attr IS NOT NULL + ), + CONSTRAINT attr_or_attr_type CHECK ( + z3950_attr IS NOT NULL OR + z3950_attr_type IS NOT NULL + ), + -- ensure the selected z3950_attr_type refers to a valid attr name + CONSTRAINT valid_z3950_attr_type CHECK ( + z3950_attr_type IS NULL OR + evergreen.z3950_name_is_valid(z3950_attr_type) + ) +); + + +-- seed data + +INSERT INTO config.z3950_index_field_map + (id, label, metabib_field, z3950_attr_type) VALUES +(1, oils_i18n_gettext(1, 'Title', 'czifm', 'label'), 5, 'title'), +(2, oils_i18n_gettext(2, 'Author', 'czifm', 'label'), 8, 'author'), +(3, oils_i18n_gettext(3, 'ISBN', 'czifm', 'label'), 18, 'isbn'), +(4, oils_i18n_gettext(4, 'ISSN', 'czifm', 'label'), 19, 'issn'), +(5, oils_i18n_gettext(5, 'LCCN', 'czifm', 'label'), 30, 'lccn'); + +INSERT INTO config.z3950_index_field_map + (id, label, record_attr, z3950_attr_type) VALUES +(6, oils_i18n_gettext(6, 'Pubdate', 'czifm', 'label'),'pubdate', 'pubdate'), +(7, oils_i18n_gettext(7, 'Item Type', 'czifm', 'label'),'item_type', 'item_type'); + + +-- let's leave room for more stock mappings +SELECT SETVAL('config.z3950_index_field_map_id_seq'::TEXT, 1000); + +COMMIT; -- 2.43.2