Fix following in other version of article
This commit is contained in:
@@ -1,22 +1,43 @@
|
||||
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
|
||||
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(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;
|
||||
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(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(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;
|
||||
|
||||
Reference in New Issue
Block a user