search filter group : schema notes on search_query consolidation
authorBill Erickson <berick@esilibrary.com>
Thu, 5 Apr 2012 19:11:09 +0000 (15:11 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 18 Apr 2012 17:27:52 +0000 (13:27 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/sql/Pg/005.schema.actors.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql

index f0fa301..229f6e3 100644 (file)
@@ -686,7 +686,8 @@ CREATE TABLE actor.search_filter_group (
     code        TEXT        NOT NULL, -- use in templates / CGI params
     label       TEXT        NOT NULL, -- i18n
     create_date TIMESTAMPTZ NOT NULL DEFAULT now(),
-    CONSTRAINT  code_once_per_org UNIQUE (owner, code)
+    CONSTRAINT  sf_code_once_per_org UNIQUE (owner, code),
+    CONSTRAINT  sf_label_once_per_org UNIQUE (owner, label)
 );
 
 CREATE TABLE actor.search_filter_group_entry (
index 493edc2..d2af899 100644 (file)
@@ -1,26 +1,49 @@
 
 BEGIN;
 
+-- QP sub-search inclusion will be based on actor.search_query.id
+CREATE TABLE actor.search_query (
+    id          SERIAL PRIMARY KEY, 
+    label       TEXT NOT NULL, -- i18n
+    query_text  TEXT NOT NULL, -- QP text
+);
+
+-- e.g. "Reading Level"
 CREATE TABLE actor.search_filter_group (
     id          SERIAL      PRIMARY KEY,
-    owner       INT         NOT NULL REFERENCES actor.org_unit (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
-    code        TEXT        NOT NULL, -- use in templates / CGI params
+    owner       INT         NOT NULL REFERENCES actor.org_unit (id) 
+                            ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
     label       TEXT        NOT NULL, -- i18n
     create_date TIMESTAMPTZ NOT NULL DEFAULT now(),
-    CONSTRAINT  code_once_per_org UNIQUE (owner, code),
-    CONSTRAINT  label_once_per_org UNIQUE (owner, label)
+    CONSTRAINT  asfg_code_once_per_org UNIQUE (owner, code),
+    CONSTRAINT  asfg_label_once_per_org UNIQUE (owner, label)
 );
 
-
+-- e.g. "Adult", "Teen", etc.
 CREATE TABLE actor.search_filter_group_entry (
-    id         SERIAL PRIMARY KEY,
-    grp        INT    NOT NULL REFERENCES actor.search_filter_group(id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
-    label      TEXT   NOT NULL, -- i18n
-    pos        INT    NOT NULL DEFAULT 0,
-    query_text TEXT   NOT NULL, -- QP text
-    CONSTRAINT query_once_per_group UNIQUE (grp, query_text)
+    id          SERIAL  PRIMARY KEY,
+    grp         INT     NOT NULL REFERENCES actor.search_filter_group(id) 
+                        ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+    pos         INT     NOT NULL DEFAULT 0,
+    query       INT     NOT NULL REFERENCES actor.search_query(id) 
+                        ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+    CONSTRAINT asfge_query_once_per_group UNIQUE (grp, query)
 );
 
+
+-- also use query for user saved searches.
+-- this allows us to support user-default-search-filters for KCLS (opac36)
+-- https://docs.google.com/document/d/1EvdytPqFjLwuA3R7U0tSuk3floBossoBdRfLR_1YH7Y/edit
+-- note:would need a tmp stored proc to migrate properly
+ALTER TABLE actor.usr_saved_search
+    ADD COLUMN query NOT NULL REFERENCES actor.search_query(id)
+        ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+    DROP COLUMN query_text, -- gets from query
+    DROP COLUMN name, -- gets from query
+    DROP COLUMN query_type, -- may be presumptuous.  QP text is the only used type.
+
+--
+
 COMMIT;
 
 /*