LP#1251394 flat_display_entry under compressed_display_entry
authorBill Erickson <berickxx@gmail.com>
Thu, 11 May 2017 21:54:58 +0000 (17:54 -0400)
committerMike Rylander <mrylander@gmail.com>
Fri, 18 Aug 2017 17:01:49 +0000 (13:01 -0400)
flat_display_entry is one row per entry with all of the relevent info.
compressed_display_entry sits atop flat_display_entry and compresses the
values into JSON scalars and arrays depending on the 'multi' value.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql
Open-ILS/src/sql/Pg/upgrade/ZZZZ.UNDO.metabib-display-field.sql

index 2cecfe6..b2540b1 100644 (file)
@@ -3710,7 +3710,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                oils_persist:tablename="metabib.flat_display_entry"
                oils_obj:fieldmapper="metabib::flat_display_entry" 
                oils_persist:field_safe="true"
-               reporter:label="Flat Display Field Entry View" 
+               reporter:label="Flat Display Entry" 
+               oils_persist:readonly="true">
+               <fields>
+                       <field name="source" reporter:datatype="id" />
+                       <field name="name" reporter:datatype="text"/>
+                       <field name="multi" reporter:datatype="bool"/>
+                       <field name="label" reporter:datatype="text"/>
+                       <field name="field" reporter:datatype="link"/>
+                       <field name="value" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="source" reltype="has_a" key="id" map="" class="bre"/>
+                       <link field="field" reltype="has_a" key="id" map="" class="cmf"/>
+                       <link field="name" reltype="has_a" key="name" map="" class="cdfm"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <retrieve/>
+                       </actions>
+               </permacrud>
+       </class>
+       <class id="mcde" controller="open-ils.cstore open-ils.pcrud" 
+               oils_persist:tablename="metabib.compressed_display_entry"
+               oils_obj:fieldmapper="metabib::compressed_display_entry" 
+               oils_persist:field_safe="true"
+               reporter:label="Compressed Display Entry" 
                oils_persist:readonly="true">
                <fields>
                        <field name="source" reporter:datatype="id" />
@@ -3729,6 +3754,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        </actions>
                </permacrud>
        </class>
+
        <class id="cdfm" controller="open-ils.cstore open-ils.pcrud" 
                oils_persist:tablename="config.display_field_map"
                oils_obj:fieldmapper="config::display_field_map"
index 2d69e81..7c75c9f 100644 (file)
@@ -22,15 +22,29 @@ CREATE VIEW metabib.flat_display_entry AS
     SELECT
         mde.source,
         cdfm.name,
-        mde.field,
-        CASE WHEN cdfm.multi THEN
+        cdfm.multi,
+        cmf.label,
+        cmf.id AS field,
+        mde.value
+    FROM metabib.display_entry mde
+    JOIN config.metabib_field cmf ON (cmf.id = mde.field)
+    JOIN config.display_field_map cdfm ON (cdfm.field = mde.field)
+;
+
+CREATE VIEW metabib.compressed_display_entry AS
+    SELECT
+        source,
+        name,
+        field,
+        multi, -- required for group-by
+        CASE WHEN multi THEN
             TO_JSON(ARRAY_AGG(value))
         ELSE
             TO_JSON(MIN(value))
         END AS value
-    FROM metabib.display_entry mde
-    JOIN config.display_field_map cdfm ON (cdfm.field = mde.field)
-    GROUP BY 1, 2, 3;
+    FROM metabib.flat_display_entry
+    GROUP BY 1,2,3,4
+;
 
 CREATE INDEX metabib_display_entry_field_idx 
     ON metabib.display_entry (field);
index 60c4cd1..2bfb04c 100644 (file)
@@ -292,6 +292,7 @@ DROP TRIGGER display_field_normalize_tgr ON metabib.display_entry;
 DROP FUNCTION metabib.display_field_normalize_trigger();
 DROP INDEX metabib.metabib_display_entry_source_idx;
 DROP INDEX metabib.metabib_display_entry_field_idx;
+DROP VIEW metabib.compressed_display_entry;
 DROP VIEW metabib.flat_display_entry;
 DROP TABLE config.display_field_map;
 DROP TABLE metabib.display_entry;