Remove Owner on Workgroup (use role MASTER instead) "find_citizen_by_id" not return user anymore, use "find_citizen_by_id_with_user" instead
45 lines
1.3 KiB
PL/PgSQL
45 lines
1.3 KiB
PL/PgSQL
create or replace function find_follow(
|
|
_target_id uuid,
|
|
_citizen_id uuid,
|
|
_target_reference regclass,
|
|
out resource json,
|
|
out following boolean
|
|
) language plpgsql as
|
|
$$
|
|
declare
|
|
_target_ids uuid[];
|
|
begin
|
|
if (_target_reference = 'article'::regclass) then
|
|
select array_agg(a2.id) into _target_ids
|
|
from article a1
|
|
join article a2 using (version_id)
|
|
where a1.id = _target_id;
|
|
|
|
select to_json(t) into resource from (
|
|
select
|
|
f.*,
|
|
json_build_object('id', f.target_id, 'reference', f.target_reference) as target,
|
|
find_citizen_by_id_with_user(f.created_by_id) as created_by
|
|
from follow as f
|
|
where f.created_by_id = _citizen_id
|
|
and array[f.target_id] <@ _target_ids
|
|
limit 1
|
|
) as t;
|
|
else
|
|
select to_json(t)
|
|
into resource
|
|
from (
|
|
select
|
|
f.*,
|
|
json_build_object('id', f.target_id, 'reference', f.target_reference) as target,
|
|
find_citizen_by_id_with_user(f.created_by_id) as created_by
|
|
from follow as f
|
|
where f.created_by_id = _citizen_id
|
|
and f.target_id = _target_id
|
|
) as t;
|
|
end if;
|
|
|
|
select resource is not null into following;
|
|
end;
|
|
$$;
|