5 CREATE OR REPLACE FUNCTION
6 evergreen.z3950_name_is_valid(TEXT) RETURNS BOOLEAN AS $func$
7 SELECT EXISTS (SELECT 1 FROM config.z3950_attr WHERE name = $1);
8 $func$ LANGUAGE SQL STRICT IMMUTABLE;
11 CREATE TABLE config.z3950_index_field_map (
12 id SERIAL PRIMARY KEY,
13 label TEXT NOT NULL, -- i18n
14 metabib_field INTEGER REFERENCES config.metabib_field(id),
15 record_attr TEXT REFERENCES config.record_attr_definition(name),
16 z3950_attr INTEGER REFERENCES config.z3950_attr(id),
17 z3950_attr_type TEXT,-- REFERENCES config.z3950_attr(name)
18 CONSTRAINT metabib_field_or_record_attr CHECK (
19 metabib_field IS NOT NULL OR
20 record_attr IS NOT NULL
22 CONSTRAINT attr_or_attr_type CHECK (
23 z3950_attr IS NOT NULL OR
24 z3950_attr_type IS NOT NULL
26 -- ensure the selected z3950_attr_type refers to a valid attr name
27 CONSTRAINT valid_z3950_attr_type CHECK (
28 z3950_attr_type IS NULL OR
29 evergreen.z3950_name_is_valid(z3950_attr_type)
36 INSERT INTO config.z3950_index_field_map
37 (id, label, metabib_field, z3950_attr_type) VALUES
38 (1, oils_i18n_gettext(1, 'Title', 'czifm', 'label'), 5, 'title'),
39 (2, oils_i18n_gettext(2, 'Author', 'czifm', 'label'), 8, 'author'),
40 (3, oils_i18n_gettext(3, 'ISBN', 'czifm', 'label'), 18, 'isbn'),
41 (4, oils_i18n_gettext(4, 'ISSN', 'czifm', 'label'), 19, 'issn'),
42 (5, oils_i18n_gettext(5, 'LCCN', 'czifm', 'label'), 30, 'lccn');
44 INSERT INTO config.z3950_index_field_map
45 (id, label, record_attr, z3950_attr_type) VALUES
46 (6, oils_i18n_gettext(6, 'Pubdate', 'czifm', 'label'),'pubdate', 'pubdate'),
47 (7, oils_i18n_gettext(7, 'Item Type', 'czifm', 'label'),'item_type', 'item_type');
50 -- let's leave room for more stock mappings
51 SELECT SETVAL('config.z3950_index_field_map_id_seq'::TEXT, 1000);