]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1047.schema.copy_tags.sql
LP#1806968 Teach Vandelay to pass correct auth tracker type
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1047.schema.copy_tags.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1047', :eg_version); -- gmcharlt/stompro
4
5 CREATE TABLE config.copy_tag_type (
6     code            TEXT NOT NULL PRIMARY KEY,
7     label           TEXT NOT NULL,
8     owner           INTEGER NOT NULL REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED
9 );
10
11 CREATE INDEX config_copy_tag_type_owner_idx
12     ON config.copy_tag_type (owner);
13
14 CREATE TABLE asset.copy_tag (
15     id              SERIAL PRIMARY KEY,
16     tag_type        TEXT REFERENCES config.copy_tag_type (code)
17                     ON UPDATE CASCADE ON DELETE CASCADE,
18     label           TEXT NOT NULL,
19     value           TEXT NOT NULL,
20     index_vector    tsvector NOT NULL,
21     staff_note      TEXT,
22     pub             BOOLEAN DEFAULT TRUE,
23     owner           INTEGER NOT NULL REFERENCES actor.org_unit (id)
24 );
25
26 CREATE INDEX asset_copy_tag_label_idx
27     ON asset.copy_tag (label);
28 CREATE INDEX asset_copy_tag_label_lower_idx
29     ON asset.copy_tag (evergreen.lowercase(label));
30 CREATE INDEX asset_copy_tag_index_vector_idx
31     ON asset.copy_tag
32     USING GIN(index_vector);
33 CREATE INDEX asset_copy_tag_tag_type_idx
34     ON asset.copy_tag (tag_type);
35 CREATE INDEX asset_copy_tag_owner_idx
36     ON asset.copy_tag (owner);
37
38 CREATE OR REPLACE FUNCTION asset.set_copy_tag_value () RETURNS TRIGGER AS $$
39 BEGIN
40     IF NEW.value IS NULL THEN
41         NEW.value = NEW.label;        
42     END IF;
43
44     RETURN NEW;
45 END;
46 $$ LANGUAGE 'plpgsql';
47
48 -- name of following trigger chosen to ensure it runs first
49 CREATE TRIGGER asset_copy_tag_do_value
50     BEFORE INSERT OR UPDATE ON asset.copy_tag
51     FOR EACH ROW EXECUTE PROCEDURE asset.set_copy_tag_value();
52 CREATE TRIGGER asset_copy_tag_fti_trigger
53     BEFORE UPDATE OR INSERT ON asset.copy_tag
54     FOR EACH ROW EXECUTE PROCEDURE oils_tsearch2('default');
55
56 CREATE TABLE asset.copy_tag_copy_map (
57     id              BIGSERIAL PRIMARY KEY,
58     copy            BIGINT REFERENCES asset.copy (id)
59                     ON UPDATE CASCADE ON DELETE CASCADE,
60     tag             INTEGER REFERENCES asset.copy_tag (id)
61                     ON UPDATE CASCADE ON DELETE CASCADE
62 );
63
64 CREATE INDEX asset_copy_tag_copy_map_copy_idx
65     ON asset.copy_tag_copy_map (copy);
66 CREATE INDEX asset_copy_tag_copy_map_tag_idx
67     ON asset.copy_tag_copy_map (tag);
68
69 INSERT INTO config.copy_tag_type (code, label, owner) VALUES ('bookplate', 'Digital Bookplate', 1);
70
71 INSERT INTO permission.perm_list ( id, code, description ) VALUES
72  ( 590, 'ADMIN_COPY_TAG_TYPES', oils_i18n_gettext( 590,
73     'Administer copy tag types', 'ppl', 'description' )),
74  ( 591, 'ADMIN_COPY_TAG', oils_i18n_gettext( 591,
75     'Administer copy tag', 'ppl', 'description' ))
76 ;
77
78 INSERT INTO config.org_unit_setting_type
79     (name, label, description, grp, datatype)
80 VALUES (
81     'opac.search.enable_bookplate_search',
82     oils_i18n_gettext(
83         'opac.search.enable_bookplate_search',
84         'Enable Digital Bookplate Search',
85         'coust',
86         'label'
87     ),
88     oils_i18n_gettext(
89         'opac.search.enable_bookplate_search',
90         'If enabled, adds a "Digital Bookplate" option to the query type selectors in the public catalog for search on copy tags.',   
91         'coust',
92         'description'
93     ),
94     'opac',
95     'bool'
96 );
97
98 COMMIT;