3 CREATE OR REPLACE FUNCTION asset.patron_default_visibility_mask () RETURNS TABLE (b_attrs TEXT, c_attrs TEXT) AS $f$
5 copy_flags TEXT; -- "c" attr
7 owning_lib TEXT; -- "c" attr
8 circ_lib TEXT; -- "c" attr
9 status TEXT; -- "c" attr
10 location TEXT; -- "c" attr
11 location_group TEXT; -- "c" attr
13 luri_org TEXT; -- "b" attr
14 bib_sources TEXT; -- "b" attr
18 copy_flags := asset.all_visible_flags(); -- Will always have at least one
20 owning_lib := NULLIF(asset.owning_lib_default(),'!()');
22 circ_lib := NULLIF(asset.circ_lib_default(),'!()');
23 status := NULLIF(asset.status_default(),'!()');
24 location := NULLIF(asset.location_default(),'!()');
25 location_group := NULLIF(asset.location_group_default(),'!()');
27 -- LURIs will be handled at the perl layer directly
28 -- luri_org := NULLIF(asset.luri_org_default(),'!()');
29 bib_sources := NULLIF(asset.bib_source_default(),'()');
32 IF luri_org IS NOT NULL AND bib_sources IS NOT NULL THEN
33 bib_tests := '('||ARRAY_TO_STRING( ARRAY[luri_org,bib_sources], '|')||')&('||luri_org||')&';
34 ELSIF luri_org IS NOT NULL THEN
35 bib_tests := luri_org || '&';
36 ELSIF bib_sources IS NOT NULL THEN
37 bib_tests := bib_sources || '|';
40 RETURN QUERY SELECT bib_tests,
42 ARRAY[copy_flags,owning_lib,circ_lib,status,location,location_group]::TEXT[],
46 $f$ LANGUAGE PLPGSQL STABLE ROWS 1;