For the change order, let's do filter sets a little more generalized-like
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Tue, 11 Sep 2012 15:56:09 +0000 (11:56 -0400)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Fri, 21 Sep 2012 15:07:00 +0000 (11:07 -0400)
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/075.schema.url_verify.sql
Open-ILS/src/sql/Pg/800.fkeys.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.url_verify.sql
Open-ILS/src/sql/Pg/upgrade/ZZZZ.data.url_verify.sql

index 3405dde..aae4856 100644 (file)
@@ -9571,37 +9571,56 @@ SELECT  usr,
 
     </class>
 
-    <class
-        id="uvfs"
-        controller="open-ils.cstore open-ils.pcrud"
-        oils_obj:fieldmapper="url_verify::filter_set"
-        oils_persist:tablename="url_verify.filter_set"
-        reporter:label="URL Verification Filter Set"
-    >
-        <fields oils_persist:primary="id" oils_persist:sequence="url_verify.url_verification_id_seq">
-            <field reporter:label="ID" name="id" reporter:datatype="id"/>
-            <field reporter:label="Name" name="name" reporter:datatype="text"/>
+       <class
+               id="cfdi"
+               controller="open-ils.cstore open-ils.pcrud"
+               oils_obj:fieldmapper="config::filter_dialog_interface"
+               oils_persist:tablename="config.filter_dialog_interface"
+               reporter:label="FilterDialog Interface">
+               <fields oils_persist:primary="key" oils_persist:sequence="config.filter_dialog_interface_pkey">
+                       <field reporter:label="Interface Key" name="key" reporter:datatype="text" />
+                       <field reporter:label="Description" name="description" reporter:datatype="text" />
+               </fields>
+               <links>
+                       <link field="filter_sets" reltype="has_many" key="interface" map="" class="cfdfs"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <retrieve />
+                       </actions>
+               </permacrud>
+       </class>
+
+       <class
+               id="cfdfs"
+               controller="open-ils.cstore open-ils.pcrud"
+               oils_obj:fieldmapper="config::filter_dialog_filter_set"
+               oils_persist:tablename="config.filter_dialog_filter_set"
+               reporter:label="FilterDialog Filter Set">
+               <fields oils_persist:primary="id" oils_persist:sequence="config.filter_dialog_filter_set_pkey">
+                       <field reporter:label="ID" name="id" reporter:datatype="id"/>
+                       <field reporter:label="Name" name="name" reporter:datatype="text"/>
                        <field reporter:label="Owning Library" name="owning_lib" reporter:datatype="org_unit"/>
                        <field reporter:label="Creator" name="creator" reporter:datatype="link"/>
-            <field reporter:label="Create Time" name="create_time" reporter:datatype="timestamp"/>
-                       <field reporter:label="Filter" name="filter" reporter:datatype="text"/>
-        </fields>
-
-        <links>
-            <link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
-            <link field="creator" reltype="has_a" key="id" map="" class="au"/>
-        </links>
-
-        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
-            <actions>
-                <create permission="URL_VERIFY" context_field="owning_lib"/>
-                <retrieve permission="URL_VERIFY" context_field="owning_lib"/>
-                <update permission="URL_VERIFY" context_field="owning_lib"/>
-                <delete permission="URL_VERIFY" context_field="owning_lib"/>
-            </actions>
-        </permacrud>
+                       <field reporter:label="Interface" name="interface" reporter:datatype="link"/>
+                       <field reporter:label="Create Time" name="create_time" reporter:datatype="timestamp"/>
+                       <field reporter:label="Filters" name="filters" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="owning_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="creator" reltype="has_a" key="id" map="" class="au"/>
+                       <link field="interface" reltype="has_a" key="key" map="" class="cfdi"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <create permission="SAVED_FILTER_DIALOG_FILTERS" context_field="owning_lib"/>
+                               <retrieve permission="SAVED_FILTER_DIALOG_FILTERS" context_field="owning_lib"/>
+                               <update permission="SAVED_FILTER_DIALOG_FILTERS" context_field="owning_lib"/>
+                               <delete permission="SAVED_FILTER_DIALOG_FILTERS" context_field="owning_lib"/>
+                       </actions>
+               </permacrud>
 
-    </class>
+       </class>
 
        <class id="cmrtm" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::marc21_rec_type_map" oils_persist:tablename="config.marc21_rec_type_map" reporter:label="MARC21 Record Type Map" oils_persist:field_safe="true">
                <fields oils_persist:primary="code">
index e1f8381..57581f7 100644 (file)
@@ -1002,4 +1002,21 @@ CREATE UNIQUE INDEX unique_wwh ON config.usr_activity_type
     (COALESCE(ewho,''), COALESCE (ewhat,''), COALESCE(ehow,''));
 
 
+CREATE TABLE config.filter_dialog_interface (
+    key         TEXT                        PRIMARY KEY,
+    description TEXT
+);  
+
+CREATE TABLE config.filter_dialog_filter_set (
+    id          SERIAL                      PRIMARY KEY,
+    name        TEXT                        NOT NULL,
+    owning_lib  INT                         NOT NULL, -- REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED,
+    creator     INT                         NOT NULL, -- REFERENCES actor.usr (id) DEFERRABLE INITIALLY DEFERRED,
+    create_time TIMESTAMP WITH TIME ZONE    NOT NULL DEFAULT NOW(),
+    interface   TEXT                        NOT NULL REFERENCES config.filter_dialog_interface (key) DEFERRABLE INITIALLY DEFERRED,
+    filters     TEXT                        NOT NULL, -- CHECK (evergreen.is_json(filters))
+    CONSTRAINT cfdfs_name_once_per_lib UNIQUE (name, owning_lib)
+);
+
+
 COMMIT;
index 653d028..7e39eba 100644 (file)
@@ -89,15 +89,5 @@ CREATE TABLE url_verify.url_verification (
     redirect_to INT                         REFERENCES url_verify.url (id) DEFERRABLE INITIALLY DEFERRED -- if redirected
 );
 
-CREATE TABLE url_verify.filter_set (
-    id          SERIAL                      PRIMARY KEY,
-    name        TEXT                        NOT NULL,
-    owning_lib  INT                         NOT NULL REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED,
-    creator     INT                         NOT NULL REFERENCES actor.usr (id) DEFERRABLE INITIALLY DEFERRED,
-    create_time TIMESTAMP WITH TIME ZONE    NOT NULL DEFAULT NOW(),
-    filter      TEXT                        NOT NULL,
-    CONSTRAINT uvfs_name_once_per_lib UNIQUE (name, owning_lib)
-);
 COMMIT;
 
index 53be2e1..e24ca9f 100644 (file)
@@ -126,4 +126,17 @@ ALTER TABLE config.z3950_source ADD CONSTRAINT use_perm_fkey FOREIGN KEY (use_pe
 
 ALTER TABLE config.org_unit_setting_type_log ADD CONSTRAINT config_org_unit_setting_type_log_fkey FOREIGN KEY (org) REFERENCES actor.org_unit (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
 
+ALTER TABLE config.filter_dialog_filter_set
+    ADD CONSTRAINT config_filter_dialog_filter_set_owning_lib_fkey
+    FOREIGN KEY (owning_lib) REFERENCES actor.org_unit (id)
+    ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+ALTER TABLE config.filter_dialog_filter_set
+    ADD CONSTRAINT config_filter_dialog_filter_set_creator_fkey
+    FOREIGN KEY (creator) REFERENCES actor.usr (id)
+    ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
+
+ALTER TABLE config.filter_dialog_filter_set
+    ADD CONSTRAINT config_filter_dialog_filter_set_filters_check
+    CHECK (evergreen.is_json(filters))
 COMMIT;
index 9bb480b..a1de894 100644 (file)
@@ -11944,4 +11944,13 @@ INSERT INTO config.org_unit_setting_type
         540
     );
 
+INSERT INTO config.filter_dialog_interface (key, description) VALUES (
+    'url_verify',
+    oils_i18n_gettext(
+        'url_verify',
+        'All Link Checker filter dialogs',
+        'cfdi',
+        'description'
+    )
+);
 
index 42e5444..ddddd41 100644 (file)
@@ -75,14 +75,20 @@ CREATE TABLE url_verify.url_verification (
     redirect_to INT                         REFERENCES url_verify.url (id) DEFERRABLE INITIALLY DEFERRED -- if redirected
 );
 
-CREATE TABLE url_verify.filter_set (
+CREATE TABLE config.filter_dialog_interface (
+    key         TEXT                        PRIMARY KEY,
+    description TEXT
+);
+
+CREATE TABLE config.filter_dialog_filter_set (
     id          SERIAL                      PRIMARY KEY,
     name        TEXT                        NOT NULL,
     owning_lib  INT                         NOT NULL REFERENCES actor.org_unit (id) DEFERRABLE INITIALLY DEFERRED,
     creator     INT                         NOT NULL REFERENCES actor.usr (id) DEFERRABLE INITIALLY DEFERRED,
     create_time TIMESTAMP WITH TIME ZONE    NOT NULL DEFAULT NOW(),
-    filter      TEXT                        NOT NULL,
-    CONSTRAINT uvfs_name_once_per_lib UNIQUE (name, owning_lib)
+    interface   TEXT                        NOT NULL REFERENCES config.filter_dialog_interface (key) DEFERRABLE INITIALLY DEFERRED,
+    filters     TEXT                        NOT NULL CHECK (evergreen.is_json(filters)),
+    CONSTRAINT cfdfs_name_once_per_lib UNIQUE (name, owning_lib)
 );
  
 COMMIT;
index f890806..2bec396 100644 (file)
@@ -127,5 +127,15 @@ INSERT INTO config.org_unit_setting_type
     );
 
 
+INSERT INTO config.filter_dialog_interface (key, description) VALUES (
+    'url_verify',
+    oils_i18n_gettext(
+        'url_verify',
+        'All Link Checker filter dialogs',
+        'cfdi',
+        'description'
+    )
+);
+
 COMMIT;