Z39.50 Batch Search/Overlay : SQL / IDL user/berick/z39-batch-fetch-overlay-rebase
authorBill Erickson <berick@esilibrary.com>
Tue, 5 Mar 2013 14:20:43 +0000 (09:20 -0500)
committerBill Erickson <berick@esilibrary.com>
Thu, 28 Mar 2013 15:11:53 +0000 (11:11 -0400)
Copied some missing pieces from the upgrade scripts into the seed schema
/ data files.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/012.schema.vandelay.sql
Open-ILS/src/sql/Pg/800.fkeys.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.z39-batch-fetch-overlay.sql
Open-ILS/src/sql/Pg/upgrade/YYYY.schema.vandelay_bucket_match.sql

index 07bb235..b20f8a7 100644 (file)
@@ -1035,4 +1035,39 @@ ALTER TABLE config.best_hold_order ADD CHECK ((
     rtime IS NOT NULL
 ));
 
+CREATE OR REPLACE FUNCTION 
+    evergreen.z3950_attr_name_is_valid(TEXT) RETURNS BOOLEAN AS $func$
+    SELECT EXISTS (SELECT 1 FROM config.z3950_attr WHERE name = $1);
+$func$ LANGUAGE SQL STRICT IMMUTABLE;
+
+COMMENT ON FUNCTION evergreen.z3950_attr_name_is_valid(TEXT) IS $$
+Results in TRUE if there exists at least one config.z3950_attr
+with the provided name.  Used by config.z3950_index_field_map
+to verify z3950_attr_type maps.
+$$;
+
+-- drop these in down here since they reference config.metabib_field
+-- and config.record_attr_definition
+CREATE TABLE config.z3950_index_field_map (
+    id              SERIAL  PRIMARY KEY,
+    label           TEXT    NOT NULL, -- i18n
+    metabib_field   INTEGER REFERENCES config.metabib_field(id),
+    record_attr     TEXT    REFERENCES config.record_attr_definition(name),
+    z3950_attr      INTEGER REFERENCES config.z3950_attr(id),
+    z3950_attr_type TEXT,-- REFERENCES config.z3950_attr(name)
+    CONSTRAINT metabib_field_or_record_attr CHECK (
+        metabib_field IS NOT NULL OR 
+        record_attr IS NOT NULL
+    ),
+    CONSTRAINT attr_or_attr_type CHECK (
+        z3950_attr IS NOT NULL OR 
+        z3950_attr_type IS NOT NULL
+    ),
+    -- ensure the selected z3950_attr_type refers to a valid attr name
+    CONSTRAINT valid_z3950_attr_type CHECK (
+        z3950_attr_type IS NULL OR 
+            evergreen.z3950_attr_name_is_valid(z3950_attr_type)
+    )
+);
+
 COMMIT;
index 34249d8..72fd275 100644 (file)
@@ -118,6 +118,7 @@ CREATE TYPE vandelay.bib_queue_queue_type AS ENUM ('bib', 'acq');
 CREATE TABLE vandelay.bib_queue (
        queue_type          vandelay.bib_queue_queue_type       NOT NULL DEFAULT 'bib',
        item_attr_def   BIGINT REFERENCES vandelay.import_item_attr_definition (id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
+    match_bucket    INTEGER, -- REFERENCES container.biblio_record_entry_bucket(id);
        CONSTRAINT vand_bib_queue_name_once_per_owner_const UNIQUE (owner,name,queue_type)
 ) INHERITS (vandelay.queue);
 ALTER TABLE vandelay.bib_queue ADD PRIMARY KEY (id);
index cf55a30..efb37c5 100644 (file)
@@ -91,6 +91,7 @@ ALTER TABLE serial.unit ADD CONSTRAINT serial_unit_creator_fkey FOREIGN KEY (cre
 ALTER TABLE serial.unit ADD CONSTRAINT serial_unit_editor_fkey FOREIGN KEY (editor) REFERENCES actor.usr (id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
 
 ALTER TABLE vandelay.import_item ADD CONSTRAINT imported_as_fkey FOREIGN KEY (imported_as) REFERENCES asset.copy (id) DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE vandelay.bib_queue ADD CONSTRAINT match_bucket_fkey FOREIGN KEY (match_bucket) REFERENCES container.biblio_record_entry_bucket(id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
 
 ALTER TABLE asset.copy_note ADD CONSTRAINT asset_copy_note_copy_fkey FOREIGN KEY (owning_copy) REFERENCES asset.copy (id) DEFERRABLE INITIALLY DEFERRED;
 ALTER TABLE asset.copy_note ADD CONSTRAINT asset_copy_note_creator_fkey FOREIGN KEY (creator) REFERENCES actor.usr (id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
index 7bfaac3..44fff4a 100644 (file)
@@ -3,10 +3,15 @@ BEGIN;
 -- TODO version check
 
 CREATE OR REPLACE FUNCTION 
-    evergreen.z3950_name_is_valid(TEXT) RETURNS BOOLEAN AS $func$
+    evergreen.z3950_attr_name_is_valid(TEXT) RETURNS BOOLEAN AS $func$
     SELECT EXISTS (SELECT 1 FROM config.z3950_attr WHERE name = $1);
 $func$ LANGUAGE SQL STRICT IMMUTABLE;
 
+COMMENT ON FUNCTION evergreen.z3950_attr_name_is_valid(TEXT) IS $$
+Results in TRUE if there exists at least one config.z3950_attr
+with the provided name.  Used by config.z3950_index_field_map
+to verify z3950_attr_type maps.
+$$;
 
 CREATE TABLE config.z3950_index_field_map (
     id              SERIAL  PRIMARY KEY,
@@ -26,7 +31,7 @@ CREATE TABLE config.z3950_index_field_map (
     -- ensure the selected z3950_attr_type refers to a valid attr name
     CONSTRAINT valid_z3950_attr_type CHECK (
         z3950_attr_type IS NULL OR 
-            evergreen.z3950_name_is_valid(z3950_attr_type)
+            evergreen.z3950_attr_name_is_valid(z3950_attr_type)
     )
 );
 
index b4e3caa..ba2f79f 100644 (file)
@@ -3,7 +3,8 @@ BEGIN;
 -- TODO version check
 
 ALTER TABLE vandelay.bib_queue ADD COLUMN match_bucket
-   INTEGER REFERENCES container.biblio_record_entry_bucket(id);
+   INTEGER REFERENCES container.biblio_record_entry_bucket(id)
+   ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;  
 
 CREATE OR REPLACE FUNCTION vandelay.match_bib_record() RETURNS TRIGGER AS $func$
 DECLARE