36 lines
753 B
PL/PgSQL
36 lines
753 B
PL/PgSQL
set check_function_bodies = off;
|
|
|
|
CREATE OR REPLACE FUNCTION public.do_grp_add_admins()
|
|
RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $function$
|
|
declare
|
|
admins int[];
|
|
begin
|
|
admins := ( select array_agg(usr.id)
|
|
from public.grp_members_admins() as usr
|
|
);
|
|
|
|
perform public.grp_add_members( to_grp => NEW.id
|
|
, add_usrs => admins
|
|
);
|
|
|
|
return null;
|
|
end;
|
|
$function$
|
|
;
|
|
|
|
CREATE OR REPLACE FUNCTION public.grp_members(of_grp integer)
|
|
RETURNS SETOF usr
|
|
LANGUAGE plpgsql
|
|
STABLE
|
|
AS $function$
|
|
begin
|
|
return query select u.*
|
|
from public.grp_usr gu
|
|
inner join public.usr u on gu.usr = u.id
|
|
where gu.grp = of_grp;
|
|
end;
|
|
$function$
|
|
;
|