]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/XXXX.schema.oai_views.sql
LP#1729620 Cleanup, fix bugs
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.schema.oai_views.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 -- VIEWS for the oai service
6 CREATE SCHEMA oai;
7
8 -- The view presents a lean table with unique bre.tc-numbers for oai paging;
9 CREATE VIEW oai.biblio AS
10   SELECT
11     bre.id                             AS rec_id,
12     bre.edit_date                      AS datestamp,
13     bre.deleted                        AS deleted
14   FROM
15     biblio.record_entry bre
16   ORDER BY
17     bre.id;
18
19 -- The view presents a lean table with unique are.tc-numbers for oai paging;
20 CREATE VIEW oai.authority AS
21   SELECT
22     are.id               AS rec_id,
23     are.edit_date        AS datestamp,
24     are.deleted          AS deleted
25   FROM
26     authority.record_entry AS are
27   ORDER BY
28     are.id;
29
30
31 -- OPTIONAL PORTION
32
33 \qecho If an edit date changes in the asset.call_number or asset.copy and you want this to persist to an OAI2 datestamp,
34 \qecho then add these stored procedures and triggers:
35 \qecho
36 \qecho 'CREATE OR REPLACE FUNCTION oai.datestamp(rid BIGINT)'
37 \qecho '  RETURNS VOID AS $$'
38 \qecho 'BEGIN'
39 \qecho '  UPDATE biblio.record_entry AS bre'
40 \qecho '  SET edit_date = now()'
41 \qecho '  WHERE bre.id = rid;'
42 \qecho 'END'
43 \qecho '$$ LANGUAGE plpgsql;'
44 \qecho
45 \qecho 'CREATE OR REPLACE FUNCTION oai.call_number_datestamp()'
46 \qecho '  RETURNS TRIGGER AS $$'
47 \qecho 'BEGIN'
48 \qecho '  IF TG_OP = ''DELETE'''
49 \qecho '  THEN'
50 \qecho '    PERFORM oai.datestamp(OLD.record);'
51 \qecho '    RETURN OLD;'
52 \qecho '  END IF;'
53 \qecho
54 \qecho '  PERFORM oai.datestamp(NEW.record);'
55 \qecho '  RETURN NEW;'
56 \qecho
57 \qecho 'END'
58 \qecho '$$ LANGUAGE plpgsql;'
59 \qecho
60 \qecho 'CREATE OR REPLACE FUNCTION oai.copy_datestamp()'
61 \qecho '  RETURNS TRIGGER AS $$'
62 \qecho 'BEGIN'
63 \qecho '  IF TG_OP = ''DELETE'''
64 \qecho '  THEN'
65 \qecho '    PERFORM oai.datestamp((SELECT acn.record FROM asset.call_number as acn WHERE acn.id = OLD.call_number));'
66 \qecho '    RETURN OLD;'
67 \qecho '  END IF;'
68 \qecho
69 \qecho '  PERFORM oai.datestamp((SELECT acn.record FROM asset.call_number as acn WHERE acn.id = NEW.call_number));'
70 \qecho '  RETURN NEW;'
71 \qecho
72 \qecho 'END'
73 \qecho '$$ LANGUAGE plpgsql;'
74 \qecho
75 \qecho 'CREATE TRIGGER call_number_datestamp AFTER INSERT OR UPDATE OR DELETE ON asset.call_number FOR EACH ROW EXECUTE PROCEDURE oai.call_number_datestamp();'
76 \qecho 'CREATE TRIGGER copy_datestamp AFTER INSERT OR UPDATE OR DELETE ON asset.copy FOR EACH ROW EXECUTE PROCEDURE oai.copy_datestamp();'
77
78 COMMIT;
79