search filter group : DB / IDL
authorBill Erickson <berick@esilibrary.com>
Thu, 23 Feb 2012 22:00:56 +0000 (17:00 -0500)
committerMike Rylander <mrylander@gmail.com>
Wed, 18 Apr 2012 17:27:51 +0000 (13:27 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/005.schema.actors.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.search_query_groups.sql

index 2887cea..96a80f1 100644 (file)
@@ -4766,7 +4766,7 @@ SELECT  usr,
             </actions>
         </permacrud>
        </class>
-       <class id="asfg" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::search_filter_group" oils_persist:tablename="actor.search_filter_group" reporter:label="Org Address">
+       <class id="asfg" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::search_filter_group" oils_persist:tablename="actor.search_filter_group" reporter:label="Search Filter Group" oils_persist:field_safe="true">
                <fields oils_persist:primary="id" oils_persist:sequence="actor.search_filter_group_id_seq">
                        <field name="id" reporter:datatype="id" reporter:selector="label"/>
                        <field name="owner" reporter:datatype="org_unit"/>
@@ -4788,11 +4788,12 @@ SELECT  usr,
             </actions>
         </permacrud>
        </class>
-       <class id="asfge" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::search_filter_group_entry" oils_persist:tablename="actor.search_filter_group_entry" reporter:label="Org Address">
+       <class id="asfge" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::search_filter_group_entry" oils_persist:tablename="actor.search_filter_group_entry" reporter:label="Search Filter Group Entry" oils_persist:field_safe="true">
                <fields oils_persist:primary="id" oils_persist:sequence="actor.search_filter_group_entry_id_seq">
                        <field name="id" reporter:datatype="id" reporter:selector="label"/>
                        <field name="grp" reporter:datatype="link"/>
                        <field name="label" reporter:datatype="text" oils_persist:i18n="true"/>
+                       <field name="pos" reporter:datatype="int"/>
                        <field name="query_text" reporter:datatype="text"/>
                </fields>
                <links>
index 5d1bd92..f0fa301 100644 (file)
@@ -693,6 +693,7 @@ 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)
 );
index 89b23a3..493edc2 100644 (file)
@@ -7,7 +7,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  code_once_per_org UNIQUE (owner, code),
+    CONSTRAINT  label_once_per_org UNIQUE (owner, label)
 );
 
 
@@ -15,6 +16,7 @@ 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)
 );
@@ -23,13 +25,17 @@ COMMIT;
 
 /*
 -- Fictional Example
+BEGIN;
 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, '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)');
 INSERT INTO actor.search_filter_group_entry (grp, label, query_text) VALUES (1, 'General', 'audience(e,f,g)');
+COMMIT;
 */
 
 /* UNDO
+BEGIN;
 DROP TABLE actor.search_filter_group_entry;
 DROP TABLE actor.search_filter_group;
+COMMIT;
 */