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;
/*