LP#1743650: Stamping upgrade script for special bib visibility handling
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1087.function.special-bib-vis-handling.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1087', :eg_version);
4
5 CREATE OR REPLACE FUNCTION asset.patron_default_visibility_mask () RETURNS TABLE (b_attrs TEXT, c_attrs TEXT)  AS $f$
6 DECLARE
7     copy_flags      TEXT; -- "c" attr
8
9     owning_lib      TEXT; -- "c" attr
10     circ_lib        TEXT; -- "c" attr
11     status          TEXT; -- "c" attr
12     location        TEXT; -- "c" attr
13     location_group  TEXT; -- "c" attr
14
15     luri_org        TEXT; -- "b" attr
16     bib_sources     TEXT; -- "b" attr
17
18     bib_tests       TEXT := '';
19 BEGIN
20     copy_flags      := asset.all_visible_flags(); -- Will always have at least one
21
22     owning_lib      := NULLIF(asset.owning_lib_default(),'!()');
23
24     circ_lib        := NULLIF(asset.circ_lib_default(),'!()');
25     status          := NULLIF(asset.status_default(),'!()');
26     location        := NULLIF(asset.location_default(),'!()');
27     location_group  := NULLIF(asset.location_group_default(),'!()');
28
29     -- LURIs will be handled at the perl layer directly
30     -- luri_org        := NULLIF(asset.luri_org_default(),'!()');
31     bib_sources     := NULLIF(asset.bib_source_default(),'()');
32
33
34     IF luri_org IS NOT NULL AND bib_sources IS NOT NULL THEN
35         bib_tests := '('||ARRAY_TO_STRING( ARRAY[luri_org,bib_sources], '|')||')&('||luri_org||')&';
36     ELSIF luri_org IS NOT NULL THEN
37         bib_tests := luri_org || '&';
38     ELSIF bib_sources IS NOT NULL THEN
39         bib_tests := bib_sources || '|';
40     END IF;
41
42     RETURN QUERY SELECT bib_tests,
43         '('||ARRAY_TO_STRING(
44             ARRAY[copy_flags,owning_lib,circ_lib,status,location,location_group]::TEXT[],
45             '&'
46         )||')';
47 END;
48 $f$ LANGUAGE PLPGSQL STABLE ROWS 1;
49
50 COMMIT;
51