3 CREATE TABLE config.copy_tag_type (
4 code TEXT NOT NULL PRIMARY KEY,
6 owner INTEGER NOT NULL REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED
9 CREATE INDEX config_copy_tag_type_owner_idx
10 ON config.copy_tag_type (owner);
12 CREATE TABLE asset.copy_tag (
13 id SERIAL PRIMARY KEY,
14 tag_type TEXT REFERENCES config.copy_tag_type (code)
15 ON UPDATE CASCADE ON DELETE CASCADE,
18 index_vector tsvector NOT NULL,
20 pub BOOLEAN DEFAULT TRUE,
21 owner INTEGER NOT NULL REFERENCES actor.org_unit (id)
24 CREATE INDEX asset_copy_tag_label_idx
25 ON asset.copy_tag (label);
26 CREATE INDEX asset_copy_tag_label_lower_idx
27 ON asset.copy_tag (evergreen.lowercase(label));
28 CREATE INDEX asset_copy_tag_index_vector_idx
30 USING GIN(index_vector);
31 CREATE INDEX asset_copy_tag_tag_type_idx
32 ON asset.copy_tag (tag_type);
33 CREATE INDEX asset_copy_tag_owner_idx
34 ON asset.copy_tag (owner);
36 CREATE OR REPLACE FUNCTION asset.set_copy_tag_value () RETURNS TRIGGER AS $$
38 IF NEW.value IS NULL THEN
39 NEW.value = NEW.label;
44 $$ LANGUAGE 'plpgsql';
46 -- name of following trigger chosen to ensure it runs first
47 CREATE TRIGGER asset_copy_tag_do_value
48 BEFORE INSERT OR UPDATE ON asset.copy_tag
49 FOR EACH ROW EXECUTE PROCEDURE asset.set_copy_tag_value();
50 CREATE TRIGGER asset_copy_tag_fti_trigger
51 BEFORE UPDATE OR INSERT ON asset.copy_tag
52 FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('default');
54 CREATE TABLE asset.copy_tag_copy_map (
55 id BIGSERIAL PRIMARY KEY,
56 copy BIGINT REFERENCES asset.copy (id)
57 ON UPDATE CASCADE ON DELETE CASCADE,
58 tag INTEGER REFERENCES asset.copy_tag (id)
59 ON UPDATE CASCADE ON DELETE CASCADE
62 CREATE INDEX asset_copy_tag_copy_map_copy_idx
63 ON asset.copy_tag_copy_map (copy);
64 CREATE INDEX asset_copy_tag_copy_map_tag_idx
65 ON asset.copy_tag_copy_map (tag);
67 INSERT INTO config.copy_tag_type (code, label, owner) VALUES ('bookplate', 'Digital Bookplate', 1);
69 INSERT INTO permission.perm_list ( id, code, description ) VALUES
70 ( 590, 'ADMIN_COPY_TAG_TYPES', oils_i18n_gettext( 590,
71 'Administer copy tag types', 'ppl', 'description' )),
72 ( 591, 'ADMIN_COPY_TAG', oils_i18n_gettext( 591,
73 'Administer copy tag', 'ppl', 'description' ))
76 INSERT INTO config.org_unit_setting_type
77 (name, label, description, grp, datatype)
79 'opac.search.enable_bookplate_search',
81 'opac.search.enable_bookplate_search',
82 'Enable Digital Bookplate Search',
87 'opac.search.enable_bookplate_search',
88 'If enabled, adds a "Digital Bookplate" option to the query type selectors in the public catalog for search on copy tags.',