--- /dev/null
+-- Schema for storing database objects used by optional Evergreen
+-- extensions and integrations that are included in the core
+-- Evergreen distribution.
+
+DROP SCHEMA IF EXISTS extra CASCADE;
+
+CREATE SCHEMA extra; -- schema for various extensions
+
+CREATE TABLE extra.rbdigital_digital_services (
+ id SERIAL PRIMARY KEY,
+ name CHARACTER VARYING(50) NOT NULL,
+ is_enabled BOOLEAN NOT NULL,
+ search_uri CHARACTER VARYING(120) NOT NULL,
+ vendor_key CHARACTER VARYING(20) NOT NULL,
+ display_order SMALLINT DEFAULT 1
+);
+COMMENT ON TABLE extra.rbdigital_digital_services IS 'This table should contain a single record for each digital media service integrated into Evergreen. ';
+
+INSERT INTO extra.rbdigital_digital_services (id, name, is_enabled, search_uri, vendor_key, display_order) VALUES (1, 'Evergreen', true, '/results', 'default', 1);
+INSERT INTO extra.rbdigital_digital_services (id, name, is_enabled, search_uri, vendor_key, display_order) VALUES (2, 'RBdigital', true, '/ebook_api/rbdigital/results', 'rbdigital', 2);
+
+CREATE TABLE extra.rbdigital_library (
+ home_library_url CHARACTER VARYING(250),
+ created_timestamp TIMESTAMP(6) WITH TIME ZONE DEFAULT now(),
+ updated_timestamp TIMESTAMP(6) WITH TIME ZONE DEFAULT now(),
+ id SERIAL PRIMARY KEY,
+ home_ou INTEGER NOT NULL REFERENCES actor.org_unit(id)
+);
+COMMENT ON TABLE extra.rbdigital_library IS 'A table defining each entity that may purchase titles.';
+
+CREATE TABLE extra.rbdigital_digital_services_authorized (
+ digital_services_id SMALLSERIAL PRIMARY KEY,
+ digital_services_library_id CHARACTER VARYING(64),
+ digital_services_library_token CHARACTER VARYING(64),
+ digital_services_name CHARACTER VARYING(20),
+ digital_services_library_url CHARACTER VARYING(250),
+ id SERIAL NOT NULL,
+ library_id INTEGER REFERENCES extra.rbdigital_library(id),
+ home_ou INTEGER
+);
+COMMENT ON TABLE extra.rbdigital_digital_services_authorized IS 'A table listing the digital services authorized for each entity listed in the library table described above.';
+
+CREATE TABLE extra.rbdigital_search_field_mappings (
+ id BIGSERIAL PRIMARY KEY,
+ evergreen_field_value CHARACTER VARYING(120),
+ digital_services_field_value CHARACTER VARYING(120),
+ search_fields_id INTEGER,
+ evergreen_field_code CHARACTER VARYING(15),
+ digital_services_field_code CHARACTER VARYING(25)
+);
+
+CREATE TABLE extra.rbdigital_search_fields (
+ id SERIAL PRIMARY KEY,
+ digital_services_id INTEGER,
+ evergreen_field CHARACTER VARYING(125),
+ digital_services_field CHARACTER VARYING(125),
+ field_type CHARACTER VARYING(50)
+);
+
+COMMENT ON TABLE extra.rbdigital_search_fields IS 'The purpose of this table is to map the Evergreen search fields to the analogous fields for each digital service. Therefore each integrated digital service will have a record in this table.';
+
+COMMIT;
)
), (
'eg.grid.admin.server.config.z3950_index_field_map', 'gui', 'object',
- oils_i18n_gettext(
+oils_i18n_gettext(
'eg.grid.admin.server.config.z3950_index_field_map',
'Grid Config: admin.server.config.z3950_index_field_map',
'cwst', 'label'
-- Allow for 1k stock templates
SELECT SETVAL('config.print_template_id_seq'::TEXT, 1000);
+INSERT INTO config.org_unit_setting_type
+ (name, label, description, grp, datatype)
+VALUES (
+ 'ebook_api.rbdigital.base_uri',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.base_uri',
+ 'RBDigital Base URI',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.base_uri',
+ 'Base URI for RBDigital API (defaults to https://api.rbdigital.com/v1). Using HTTPS here is strongly encouraged.',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+),(
+ 'ebook_api.rbdigital.library_id',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.library_id',
+ 'RBDigital Library ID',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.library_id',
+ 'Identifier assigned to this library by RBDigital',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+),(
+ 'ebook_api.rbdigital.basic_token',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.basic_token',
+ 'RBDigital Basic Token',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.basic_token',
+ 'Basic token for client authentication with RBDigital API (supplied by RBDigital)',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+);
+
INSERT INTO config.workstation_setting_type (name, grp, datatype, label)
VALUES (
'eg.grid.booking.manage', 'gui', 'object',
500.view.cross-schema.sql
+700.schema.extras.sql
+
800.fkeys.sql
900.audit-functions.sql
+++ /dev/null
-BEGIN;
-
-SELECT evergreen.upgrade_deps_block_check('1030', :eg_version);
-
-INSERT INTO config.org_unit_setting_type
- (name, label, description, grp, datatype)
-VALUES (
- 'ebook_api.rbdigital.base_uri',
- oils_i18n_gettext(
- 'ebook_api.rbdigital.base_uri',
- 'RBDigital Base URI',
- 'coust',
- 'label'
- ),
- oils_i18n_gettext(
- 'ebook_api.rbdigital.base_uri',
- 'Base URI for RBDigital API (defaults to https://api.rbdigital.com/v1). Using HTTPS here is strongly encouraged.',
- 'coust',
- 'description'
- ),
- 'ebook_api',
- 'string'
-),(
- 'ebook_api.rbdigital.library_id',
- oils_i18n_gettext(
- 'ebook_api.rbdigital.library_id',
- 'RBDigital Library ID',
- 'coust',
- 'label'
- ),
- oils_i18n_gettext(
- 'ebook_api.rbdigital.library_id',
- 'Identifier assigned to this library by RBDigital',
- 'coust',
- 'description'
- ),
- 'ebook_api',
- 'string'
-),(
- 'ebook_api.rbdigital.basic_token',
- oils_i18n_gettext(
- 'ebook_api.rbdigital.basic_token',
- 'RBDigital Basic Token',
- 'coust',
- 'label'
- ),
- oils_i18n_gettext(
- 'ebook_api.rbdigital.basic_token',
- 'Basic token for client authentication with RBDigital API (supplied by RBDigital)',
- 'coust',
- 'description'
- ),
- 'ebook_api',
- 'string'
-);
-
-INSERT INTO actor.org_unit_setting (org_unit, name, value)
- VALUES
- (1, 'ebook_api.rbdigital.base_uri', '"api.rbdigital.com"'),
- (1, 'ebook_api.rbdigital.basic_token', '"BF8DD41C-B286-4F60-9FF5-F4C5B3E57A11"'),
- (1, 'ebook_api.rbdigital.library_id', '"3925"');
-COMMIT;
-
--- /dev/null
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+INSERT INTO config.org_unit_setting_type
+ (name, label, description, grp, datatype)
+VALUES (
+ 'ebook_api.rbdigital.base_uri',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.base_uri',
+ 'RBDigital Base URI',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.base_uri',
+ 'Base URI for RBDigital API (defaults to https://api.rbdigital.com/v1). Using HTTPS here is strongly encouraged.',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+),(
+ 'ebook_api.rbdigital.library_id',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.library_id',
+ 'RBDigital Library ID',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.library_id',
+ 'Identifier assigned to this library by RBDigital',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+),(
+ 'ebook_api.rbdigital.basic_token',
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.basic_token',
+ 'RBDigital Basic Token',
+ 'coust',
+ 'label'
+ ),
+ oils_i18n_gettext(
+ 'ebook_api.rbdigital.basic_token',
+ 'Basic token for client authentication with RBDigital API (supplied by RBDigital)',
+ 'coust',
+ 'description'
+ ),
+ 'ebook_api',
+ 'string'
+);
+
+COMMIT;
+
--- /dev/null
+BEGIN;
+
+-- SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+CREATE SCHEMA extra; -- schema for various extensions
+
+CREATE TABLE extra.rbdigital_digital_services (
+ id SERIAL PRIMARY KEY,
+ name CHARACTER VARYING(50) NOT NULL,
+ is_enabled BOOLEAN NOT NULL,
+ search_uri CHARACTER VARYING(120) NOT NULL,
+ vendor_key CHARACTER VARYING(20) NOT NULL,
+ display_order SMALLINT DEFAULT 1
+);
+COMMENT ON TABLE extra.rbdigital_digital_services IS 'This table should contain a single record for each digital media service integrated into Evergreen. ';
+
+INSERT INTO extra.rbdigital_digital_services (id, name, is_enabled, search_uri, vendor_key, display_order) VALUES (1, 'Evergreen', true, '/results', 'default', 1);
+INSERT INTO extra.rbdigital_digital_services (id, name, is_enabled, search_uri, vendor_key, display_order) VALUES (2, 'RBdigital', true, '/ebook_api/rbdigital/results', 'rbdigital', 2);
+
+CREATE TABLE extra.rbdigital_library (
+ home_library_url CHARACTER VARYING(250),
+ created_timestamp TIMESTAMP(6) WITH TIME ZONE DEFAULT now(),
+ updated_timestamp TIMESTAMP(6) WITH TIME ZONE DEFAULT now(),
+ id SERIAL PRIMARY KEY,
+ home_ou INTEGER NOT NULL REFERENCES actor.org_unit(id)
+);
+COMMENT ON TABLE extra.rbdigital_library IS 'A table defining each entity that may purchase titles.';
+
+CREATE TABLE extra.rbdigital_digital_services_authorized (
+ digital_services_id SMALLSERIAL PRIMARY KEY,
+ digital_services_library_id CHARACTER VARYING(64),
+ digital_services_library_token CHARACTER VARYING(64),
+ digital_services_name CHARACTER VARYING(20),
+ digital_services_library_url CHARACTER VARYING(250),
+ id SERIAL NOT NULL,
+ library_id INTEGER REFERENCES extra.rbdigital_library(id),
+ home_ou INTEGER
+);
+COMMENT ON TABLE extra.rbdigital_digital_services_authorized IS 'A table listing the digital services authorized for each entity listed in the library table described above.';
+
+CREATE TABLE extra.rbdigital_search_field_mappings (
+ id BIGSERIAL PRIMARY KEY,
+ evergreen_field_value CHARACTER VARYING(120),
+ digital_services_field_value CHARACTER VARYING(120),
+ search_fields_id INTEGER,
+ evergreen_field_code CHARACTER VARYING(15),
+ digital_services_field_code CHARACTER VARYING(25)
+);
+
+CREATE TABLE extra.rbdigital_search_fields (
+ id SERIAL PRIMARY KEY,
+ digital_services_id INTEGER,
+ evergreen_field CHARACTER VARYING(125),
+ digital_services_field CHARACTER VARYING(125),
+ field_type CHARACTER VARYING(50)
+);
+
+COMMENT ON TABLE extra.rbdigital_search_fields IS 'The purpose of this table is to map the Evergreen search fields to the analogous fields for each digital service. Therefore each integrated digital service will have a record in this table.';