From 4a43bc333c9fbe6a30801da04c1aa8d205226c08 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 23 Feb 2012 14:28:50 -0500 Subject: [PATCH] search filter group : DB / IDL Signed-off-by: Bill Erickson --- Open-ILS/examples/fm_IDL.xml | 48 ++++++++++++++++++++++ Open-ILS/src/sql/Pg/005.schema.actors.sql | 16 ++++++++ .../Pg/upgrade/XXXX.schema.search_query_groups.sql | 35 ++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index 9d9b30f830..2887ceaa1e 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -4766,6 +4766,54 @@ SELECT usr, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/src/sql/Pg/005.schema.actors.sql b/Open-ILS/src/sql/Pg/005.schema.actors.sql index 21363b966b..5d1bd9239e 100644 --- a/Open-ILS/src/sql/Pg/005.schema.actors.sql +++ b/Open-ILS/src/sql/Pg/005.schema.actors.sql @@ -679,6 +679,22 @@ CREATE TABLE actor.org_unit_custom_tree_node ( parent_node INTEGER REFERENCES actor.org_unit_custom_tree_node (id) DEFERRABLE INITIALLY DEFERRED, sibling_order INTEGER NOT NULL DEFAULT 0, CONSTRAINT aouctn_once_per_org UNIQUE (tree, org_unit) + +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 + label TEXT NOT NULL, -- i18n + create_date TIMESTAMPTZ NOT NULL DEFAULT now(), + CONSTRAINT code_once_per_org UNIQUE (owner, code) +); + +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 + query_text TEXT NOT NULL, -- QP text + CONSTRAINT query_once_per_group UNIQUE (grp, query_text) ); COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql new file mode 100644 index 0000000000..89b23a36e2 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql @@ -0,0 +1,35 @@ + +BEGIN; + +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 + label TEXT NOT NULL, -- i18n + create_date TIMESTAMPTZ NOT NULL DEFAULT now(), + CONSTRAINT code_once_per_org UNIQUE (owner, code) +); + + +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 + query_text TEXT NOT NULL, -- QP text + CONSTRAINT query_once_per_group UNIQUE (grp, query_text) +); + +COMMIT; + +/* +-- Fictional Example +INSERT INTO actor.search_filter_group (owner, code, label) VALUES (4, 'reading_level', 'Reading Level'); +INSERT INTO actor.search_filter_group_entry (grp, label, query_text) VALUES (1, 'Children', 'audience(a,b,c) || locations(3,4,5,6)'); +INSERT INTO actor.search_filter_group_entry (grp, label, query_text) VALUES (1, 'Juvenile', '(audience(j,d) && locations(1,2,7,8)) || locations(10, 11, 12, 13)'); +INSERT INTO actor.search_filter_group_entry (grp, label, query_text) VALUES (1, 'General', 'audience(e,f,g)'); +*/ + +/* UNDO +DROP TABLE actor.search_filter_group_entry; +DROP TABLE actor.search_filter_group; +*/ -- 2.11.0