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" />
</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"
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);
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;