]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1050.function.permission.user_perms.sql
LP#1643709: Stamping upgrade scripts
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1050.function.permission.user_perms.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1050', :eg_version); -- mmorgan/cesardv/gmcharlt
4
5 CREATE OR REPLACE FUNCTION permission.usr_perms ( INT ) RETURNS SETOF permission.usr_perm_map AS $$
6     SELECT      DISTINCT ON (usr,perm) *
7           FROM  (
8                         (SELECT * FROM permission.usr_perm_map WHERE usr = $1)
9             UNION ALL
10                         (SELECT -p.id, $1 AS usr, p.perm, p.depth, p.grantable
11                           FROM  permission.grp_perm_map p
12                           WHERE p.grp IN (
13       SELECT    (permission.grp_ancestors(
14       (SELECT profile FROM actor.usr WHERE id = $1)
15                                         )).id
16                                 )
17                         )
18             UNION ALL
19                         (SELECT -p.id, $1 AS usr, p.perm, p.depth, p.grantable
20                           FROM  permission.grp_perm_map p
21                           WHERE p.grp IN (SELECT (permission.grp_ancestors(m.grp)).id FROM permission.usr_grp_map m WHERE usr = $1))
22                 ) AS x
23           ORDER BY 2, 3, 4 ASC, 5 DESC ;
24 $$ LANGUAGE SQL STABLE ROWS 10;
25
26 COMMIT;
27