26dc6c706ee5d6fbe9e58229c6dda1e13ffdad19
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.schema.course-materials-module.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 CREATE TABLE asset.course_module_course (
6     id              SERIAL PRIMARY KEY,
7     name            TEXT NOT NULL,
8     course_number   TEXT NOT NULL,
9     section_number  TEXT,
10     owning_lib      INT REFERENCES actor.org_unit (id),
11     is_archived        BOOLEAN NOT NULL DEFAULT false;
12 );
13
14 CREATE TABLE asset.course_module_course_users (
15     id              SERIAL PRIMARY KEY,
16     course          INT NOT NULL REFERENCES asset.course_module_course (id),
17     usr             INT NOT NULL REFERENCES actor.usr (id),
18     usr_role        TEXT,
19     is_public       BOOLEAN NOT NULL DEFAULT false
20 );
21
22 CREATE TABLE asset.course_module_course_materials (
23     id              SERIAL PRIMARY KEY,
24     course          INT NOT NULL REFERENCES asset.course_module_course (id),
25     item            INT REFERENCES asset.copy (id),
26     relationship    TEXT,
27     record          INT REFERENCES biblio.record_entry (id),
28     temporary_record         BOOLEAN,
29     original_location        INT REFERENCES asset.copy_location,
30     original_status          INT REFERENCES config.copy_status,
31     original_circ_modifier   TEXT, --REFERENCES config.circ_modifier,
32     original_callnumber      INT REFERENCES asset.call_number,
33     unique (course, item, record)
34 );
35
36 CREATE TABLE asset.course_module_term (
37     id              SERIAL  PRIMARY KEY,
38     name            TEXT    UNIQUE NOT NULL,
39     owning_lib      INT REFERENCES actor.org_unit (id),
40         start_date      TIMESTAMP WITH TIME ZONE,
41         end_date        TIMESTAMP WITH TIME ZONE
42 );
43
44 CREATE TABLE asset.course_module_term_course_map (
45     id              BIGSERIAL  PRIMARY KEY,
46     term            INT     NOT NULL REFERENCES asset.course_module_term (id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
47     course          INT     NOT NULL REFERENCES asset.course_module_course (id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
48 );
49
50 INSERT INTO permission.perm_list(id, code, description)
51     VALUES (
52         624,
53         'MANAGE_RESERVES',
54         oils_i18n_gettext(
55             624,
56             'Allows user to manage Courses, Course Materials, and associate Users with Courses.',
57             'ppl',
58             'description'
59         )
60     );
61
62 INSERT INTO permission.grp_perm_map(perm, grp, depth) VALUES (624, 9, 0), (624, 11, 0), (624, 12, 0), (624, 13, 0);
63
64 INSERT INTO config.org_unit_setting_type 
65     (grp, name, datatype, label, description, fm_class)
66 VALUES (
67     'circ',
68     'circ.course_materials_opt_in', 'bool',
69     oils_i18n_gettext(
70         'circ.course_materials_opt_in',
71         'Opt Org Unit into the Course Materials Module',
72         'coust',
73         'label'
74     ),
75     oils_i18n_gettext(
76         'circ.course_materials_opt_in',
77         'If enabled, the Org Unit will utilize Course Material functionality.'
78         'coust',
79         'description'
80     ), null
81 ), (
82     'circ',
83     'circ.course_materials_browse_by_instructor', 'bool',
84     oils_i18n_gettext(
85         'circ.course_materials_browse_by_instructor',
86         'Allow users to browse Courses by Instructor',
87         'coust',
88         'label'
89     ),
90     oils_i18n_gettext(
91         'circ.course_materials_browse_by_instructor',
92         'If enabled, the Org Unit will allow OPAC users to browse Courses by instructor name.'
93         'coust',
94         'description'
95     ), null
96 ), (
97     'circ',
98     'circ.course_materials_brief_record_bib_source', 'link',
99     oils_i18n_gettext(
100         'circ.course_materials_brief_record_bib_source',
101         'Bib source for brief records created in the course materials module',
102         'coust', 'label'
103     ),
104     oils_i18n_gettext(
105         'circ.course_materials_brief_record_bib_source',
106         'The course materials module will use this bib source for any new brief bibliographic records made inside that module. For best results, use a transcendant bib source.',
107         'coust', 'description'
108     ), 'cbs'
109
110 );
111
112 INSERT INTO config.bib_source (quality, source, transcendant) VALUES
113     (1, oils_i18n_gettext(1, 'Course materials module', 'cbs', 'source'), TRUE);
114
115 INSERT INTO actor.org_unit_setting (org_unit, name, value)
116     SELECT 1, 'circ.course_materials_brief_record_bib_source', id
117     FROM config.bib_source
118     WHERE source='Course materials module';
119
120 COMMIT;