LP#1772680: sort out seed data and upgrade for new RBdigital YAOUS
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 14 Aug 2018 01:01:31 +0000 (21:01 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 16 Mar 2020 21:15:49 +0000 (17:15 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
LP#1772680: schema updates

This includes tables used by the RBdigital integration, putting
them in a new schema called 'extra' that's meant to collect
Evergreen extensions and integrations that are optional but ship
with Evergreen.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/sql/Pg/700.schema.extras.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/sql_file_manifest
Open-ILS/src/sql/Pg/upgrade/1030.data.org-setting.ebook-api-rbdigital.sql [deleted file]
Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting.ebook-api-rbdigital.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/YYYY.schema.extras_rbdigital.sql [new file with mode: 0644]

diff --git a/Open-ILS/src/sql/Pg/700.schema.extras.sql b/Open-ILS/src/sql/Pg/700.schema.extras.sql
new file mode 100644 (file)
index 0000000..4ffc52c
--- /dev/null
@@ -0,0 +1,62 @@
+-- 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;
index 0290720..9ee2cad 100644 (file)
@@ -20001,7 +20001,7 @@ VALUES (
     )
 ), (
     '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'
@@ -20274,6 +20274,58 @@ $TEMPLATE$
 -- 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',
index e4f9152..72f5a98 100644 (file)
@@ -49,6 +49,8 @@ FTS_CONFIG_FILE
 
 500.view.cross-schema.sql
 
+700.schema.extras.sql
+
 800.fkeys.sql
 
 900.audit-functions.sql
diff --git a/Open-ILS/src/sql/Pg/upgrade/1030.data.org-setting.ebook-api-rbdigital.sql b/Open-ILS/src/sql/Pg/upgrade/1030.data.org-setting.ebook-api-rbdigital.sql
deleted file mode 100644 (file)
index fab2dc9..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-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;
-
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting.ebook-api-rbdigital.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.org-setting.ebook-api-rbdigital.sql
new file mode 100644 (file)
index 0000000..4e525f3
--- /dev/null
@@ -0,0 +1,58 @@
+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;
+
diff --git a/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.extras_rbdigital.sql b/Open-ILS/src/sql/Pg/upgrade/YYYY.schema.extras_rbdigital.sql
new file mode 100644 (file)
index 0000000..076db26
--- /dev/null
@@ -0,0 +1,58 @@
+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.';