36 lines
753 B
MySQL
36 lines
753 B
MySQL
|
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$
|
||
|
;
|