LPXXX new headings getting started user/berick/lpxxx-new-headings
authorBill Erickson <berickxx@gmail.com>
Fri, 28 Apr 2023 14:57:54 +0000 (10:57 -0400)
committerBill Erickson <berickxx@gmail.com>
Fri, 28 Apr 2023 14:57:54 +0000 (10:57 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.new-headings.sql [new file with mode: 0644]

index 8bccb81..38fad9e 100644 (file)
@@ -15595,6 +15595,61 @@ SELECT  usr,
                        </actions>
                </permacrud>
        </class>
+       <class id="rcbed" 
+               controller="open-ils.cstore open-ils.pcrud" 
+               oils_obj:fieldmapper="reporter::cataloged_browse_entry_detail" 
+               oils_persist:tablename="reporter.cataloged_browse_entry_detail"
+               reporter:label="Cataloged Headings" 
+               reporter:core="true" oils_persist:readonly="true">
+       <fields>
+               <field name="browse_axis" reporter:datatype="text" reporter:label="Heading Type"/>
+               <field name="heading_date" reporter:datatype="timestamp" reporter:label="Heading Date"/>
+               <field name="prev_entry_value" reporter:datatype="text" reporter:label="Previous Heading"/>
+               <field name="prev_entry" reporter:datatype="link" reporter:label="Previous Browse Entry"/>
+               <field name="prev_bib_record" reporter:datatype="link" reporter:label="Previous Bib Record"/>
+               <field name="prev_field_label" reporter:datatype="text" reporter:label="Previous Field Label"/>
+               <field name="prev_field_def" reporter:datatype="link" reporter:label="Previous Field Definition"/>
+               <field name="prev_auth_tag" reporter:datatype="text" reporter:label="Previous Authority Tag"/>
+               <field name="entry_value" reporter:datatype="text" reporter:label="Heading"/>
+               <field name="entry" reporter:datatype="link" reporter:label="Browse Entry"/>
+               <field name="entry_create_date" reporter:datatype="timestamp" reporter:label="Browse Entry Create Date"/>
+               <field name="bib_record" reporter:datatype="link" reporter:label="Bib Record"/>
+               <field name="field_label" reporter:datatype="text" reporter:label="Field Label"/>
+               <field name="field_def" reporter:datatype="link" reporter:label="Field Definition"/>
+               <field name="bib_edit_date" reporter:datatype="timestamp" reporter:label="Bib Record Edit Date"/>
+               <field name="bib_create_date" reporter:datatype="timestamp" reporter:label="Bib Record Create Date"/>
+               <field name="bib_cataloging_date" reporter:datatype="timestamp" reporter:label="Bib Record Cataloging Date"/>
+               <field name="bib_marc_001" reporter:datatype="text" reporter:label="Bib Record MARC 001"/>
+               <field name="bib_marc_1xx" reporter:datatype="text" reporter:label="Bib Record MARC 1XX"/>
+               <field name="bib_marc_245" reporter:datatype="text" reporter:label="Bib Record MARC 245"/>
+               <field name="mattype" reporter:datatype="text" reporter:label="Material Type"/>
+               <field name="bib_editor" reporter:datatype="link" reporter:label="Bib Record Editor"/>
+               <field name="bib_editor_usrname" reporter:datatype="text" reporter:label="Bib Record Editor Username"/>
+               <field name="next_entry" reporter:datatype="link" reporter:label="Next Browse Entry"/>
+               <field name="next_entry_value" reporter:datatype="text" reporter:label="Next Heading"/>
+               <field name="next_bib_record" reporter:datatype="link" reporter:label="Next Bib Record"/>
+               <field name="next_field_label" reporter:datatype="text" reporter:label="Next Field Label"/>
+               <field name="next_field_def" reporter:datatype="link" reporter:label="Next Field Definition"/>
+               <field name="next_auth_tag" reporter:datatype="text" reporter:label="Next Authority Tag"/>
+       </fields>
+       <links>
+               <link field="prev_entry" reltype="has_a" key="id" map="" class="mbae"/>
+               <link field="prev_bib_record" reltype="has_a" key="id" map="" class="bre"/>
+               <link field="prev_field_def" reltype="has_a" key="id" map="" class="cmf"/>
+               <link field="entry" reltype="has_a" key="id" map="" class="mbae"/>
+               <link field="bib_record" reltype="has_a" key="id" map="" class="bre"/>
+               <link field="bib_editor" reltype="has_a" key="id" map="" class="au"/>
+               <link field="field_def" reltype="has_a" key="id" map="" class="cmf"/>
+               <link field="next_entry" reltype="has_a" key="id" map="" class="mbae"/>
+               <link field="next_bib_record" reltype="has_a" key="id" map="" class="bre"/>
+               <link field="next_field_def" reltype="has_a" key="id" map="" class="cmf"/>
+       </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <retrieve permission="STAFF_LOGIN" global_required='true'/>
+                       </actions>
+               </permacrud>
+       </class>
 
        <!-- ********************************************************************************************************************* -->
 </IDL>
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.new-headings.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.new-headings.sql
new file mode 100644 (file)
index 0000000..5d60d1a
--- /dev/null
@@ -0,0 +1,99 @@
+
+CREATE VIEW reporter.live_cataloged_browse_entry AS
+ WITH cataloged_entries AS (
+         SELECT entry.id AS entry,
+            entry.value AS entry_value,
+            entry.sort_value AS entry_sort_value,
+            entry.create_date AS entry_create_date,
+            map.source AS bib_record,
+            map.def AS field_def,
+            bre.cataloging_date AS bib_cataloging_date,
+            bre.editor AS bib_editor,
+            bre.edit_date AS bib_edit_date,
+            bre.create_date AS bib_create_date,
+            cmf.field_class AS browse_axis,
+            cmf.label AS field_label,
+            ccvm.code AS mattype,
+            GREATEST(bre.cataloging_date, entry.create_date) AS heading_date,
+            rank() OVER (PARTITION BY entry.id ORDER BY bre.cataloging_date, map.id) AS rank
+           FROM (((((metabib.browse_entry entry
+             JOIN metabib.browse_entry_def_map map ON ((map.entry = entry.id)))
+             JOIN config.metabib_field cmf ON ((cmf.id = map.def)))
+             JOIN biblio.record_entry bre ON ((bre.id = map.source)))
+             JOIN metabib.record_attr_vector_list vec ON ((vec.source = bre.id)))
+             JOIN config.coded_value_map ccvm ON (((ccvm.ctype = 'mattype'::text) AND (ccvm.id = ANY (vec.vlist)))))
+          WHERE ((bre.cataloging_date IS NOT NULL) AND (cmf.field_class = ANY (ARRAY['author'::text, 'subject'::text, 'series'::text])))
+        )
+ SELECT all_entries.entry,
+    all_entries.entry_value,
+    all_entries.entry_sort_value,
+    all_entries.entry_create_date,
+    all_entries.bib_record,
+    all_entries.field_def,
+    all_entries.bib_cataloging_date,
+    all_entries.bib_editor,
+    all_entries.bib_edit_date,
+    all_entries.bib_create_date,
+    all_entries.browse_axis,
+    all_entries.field_label,
+    all_entries.mattype,
+    all_entries.heading_date,
+    all_entries.rank
+   FROM cataloged_entries all_entries
+  WHERE (all_entries.rank = 1);
+
+
+CREATE VIEW reporter.cataloged_browse_entry_detail AS
+ SELECT entry.entry,
+    entry.entry_value,
+    entry.entry_sort_value,
+    entry.entry_create_date,
+    entry.bib_record,
+    entry.field_def,
+    entry.bib_cataloging_date,
+    entry.bib_editor,
+    entry.bib_edit_date,
+    entry.bib_create_date,
+    entry.browse_axis,
+    entry.field_label,
+    entry.mattype,
+    entry.heading_date,
+    entry.rank,
+    usr.usrname AS bib_editor_usrname,
+    evergreen.marc_tag_to_string('1'::text, bre.marc) AS bib_marc_1xx,
+    evergreen.marc_tag_to_string('245'::text, bre.marc) AS bib_marc_245,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry AS prev_entry,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_value AS prev_entry_value,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_sort_value AS prev_entry_sort_value,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_create_date AS prev_entry_create_date,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_record AS prev_bib_record,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_editor AS prev_bib_editor,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_edit_date AS prev_bib_edit_date,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_create_date AS prev_bib_create_date,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_cataloging_date AS prev_bib_cataloging_date,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_field_def AS prev_field_def,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_field_label AS prev_field_label,
+    (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_auth_tag AS prev_auth_tag,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry AS next_entry,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_value AS next_entry_value,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_sort_value AS next_entry_sort_value,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_create_date AS next_entry_create_date,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_record AS next_bib_record,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_editor AS next_bib_editor,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_edit_date AS next_bib_edit_date,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_create_date AS next_bib_create_date,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_cataloging_date AS next_bib_cataloging_date,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_field_def AS next_field_def,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_field_label AS next_field_label,
+    (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_auth_tag AS next_auth_tag
+   FROM ((reporter.live_cataloged_browse_entry entry
+     JOIN biblio.record_entry bre ON ((bre.id = entry.bib_record)))
+     JOIN actor.usr usr ON ((usr.id = bre.editor)))
+  ORDER BY
+        CASE entry.browse_axis
+            WHEN 'author'::text THEN 1
+            WHEN 'subject'::text THEN 2
+            ELSE 3
+        END, entry.entry_sort_value;
+
+