3 CREATE OR REPLACE FUNCTION reporter.hold_request_record_mapper () RETURNS TRIGGER AS $$
5 IF TG_OP = 'INSERT' THEN
6 INSERT INTO reporter.hold_request_record (id, target, hold_type, bib_record)
11 WHEN NEW.hold_type = 'T'
13 WHEN NEW.hold_type = 'I'
14 THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target)
15 WHEN NEW.hold_type = 'V'
16 THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target)
17 WHEN NEW.hold_type IN ('C','R','F')
18 THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target)
19 WHEN NEW.hold_type = 'M'
20 THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target)
21 WHEN NEW.hold_type = 'P'
22 THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target)
24 ELSIF TG_OP = 'UPDATE' AND (OLD.target <> NEW.target OR OLD.hold_type <> NEW.hold_type) THEN
25 UPDATE reporter.hold_request_record
26 SET target = NEW.target,
27 hold_type = NEW.hold_type,
29 WHEN NEW.hold_type = 'T'
31 WHEN NEW.hold_type = 'I'
32 THEN (SELECT ssub.record_entry FROM serial.subscription ssub JOIN serial.issuance si ON (si.subscription = ssub.id) WHERE si.id = NEW.target)
33 WHEN NEW.hold_type = 'V'
34 THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = NEW.target)
35 WHEN NEW.hold_type IN ('C','R','F')
36 THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = NEW.target)
37 WHEN NEW.hold_type = 'M'
38 THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = NEW.target)
39 WHEN NEW.hold_type = 'P'
40 THEN (SELECT bmp.record FROM biblio.monograph_part bmp WHERE bmp.id = NEW.target)