add query "find_reference_by_id"
This commit is contained in:
@@ -9,9 +9,7 @@ begin
|
|||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
com.*,
|
com.*,
|
||||||
-- TODO use generic object, not article
|
find_reference_by_id(com.target_id, com.target_reference) as target,
|
||||||
-- json_build_object('id', com.target_id) as target,
|
|
||||||
find_article_by_id(com.target_id) as target,
|
|
||||||
find_citizen_by_id(com.created_by_id) as created_by
|
find_citizen_by_id(com.created_by_id) as created_by
|
||||||
from "comment" as com
|
from "comment" as com
|
||||||
where id = _id
|
where id = _id
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
create or replace function find_comments_by_citizen(
|
create or replace function find_comments_by_citizen(
|
||||||
_created_by_id uuid,
|
_created_by_id uuid,
|
||||||
|
_reference regclass default null,
|
||||||
"limit" int default 50,
|
"limit" int default 50,
|
||||||
"offset" int default 0,
|
"offset" int default 0,
|
||||||
out resource json,
|
out resource json,
|
||||||
@@ -7,17 +8,31 @@ create or replace function find_comments_by_citizen(
|
|||||||
) language plpgsql as
|
) language plpgsql as
|
||||||
$$
|
$$
|
||||||
begin
|
begin
|
||||||
select json_agg(t), (select count(id) from "comment" where created_by_id = _created_by_id)
|
select
|
||||||
|
json_agg(t),
|
||||||
|
(
|
||||||
|
select count(id) from "comment"
|
||||||
|
where
|
||||||
|
(_reference is null or _reference = target_reference)
|
||||||
|
and created_by_id = _created_by_id
|
||||||
|
)
|
||||||
into resource, total
|
into resource, total
|
||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
com.*,
|
com.*,
|
||||||
json_build_object('id', com.target_id) as target,
|
find_reference_by_id(com.target_id, _reference) as target,
|
||||||
find_citizen_by_id(com.created_by_id) as created_by
|
find_citizen_by_id(com.created_by_id) as created_by
|
||||||
|
|
||||||
from "comment" as com
|
from "comment" as com
|
||||||
where created_by_id = _created_by_id
|
|
||||||
order by created_at desc,
|
where
|
||||||
|
(_reference is null or _reference = target_reference)
|
||||||
|
and created_by_id = _created_by_id
|
||||||
|
|
||||||
|
order by
|
||||||
|
created_at desc,
|
||||||
com.created_at desc
|
com.created_at desc
|
||||||
|
|
||||||
limit "limit" offset "offset"
|
limit "limit" offset "offset"
|
||||||
) as t;
|
) as t;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ begin
|
|||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
com.*,
|
com.*,
|
||||||
json_build_object('id', com.target_id) as target,
|
find_reference_by_id(com.target_id, com.target_reference) as target,
|
||||||
find_citizen_by_id(com.created_by_id) as created_by
|
find_citizen_by_id(com.created_by_id) as created_by
|
||||||
from "comment" as com
|
from "comment" as com
|
||||||
where com.parents_ids @> array[_parent_id]
|
where com.parents_ids @> array[_parent_id]
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ begin
|
|||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
com.*,
|
com.*,
|
||||||
json_build_object('id', com.target_id) as target,
|
find_reference_by_id(com.target_id, com.target_reference) as target,
|
||||||
find_citizen_by_id(com.created_by_id) as created_by
|
find_citizen_by_id(com.created_by_id) as created_by
|
||||||
from "comment" as com
|
from "comment" as com
|
||||||
where com.target_id = _target_id
|
where com.target_id = _target_id
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
create or replace function find_comments_constitution_by_citizen(
|
|
||||||
_created_by_id uuid,
|
|
||||||
"limit" int default 50,
|
|
||||||
"offset" int default 0,
|
|
||||||
out resource json,
|
|
||||||
out total int
|
|
||||||
) language plpgsql as
|
|
||||||
$$
|
|
||||||
begin
|
|
||||||
select json_agg(t), (select count(id) from comment where target_reference = 'constitution'::regclass)
|
|
||||||
into resource, total
|
|
||||||
from (
|
|
||||||
select
|
|
||||||
com.*,
|
|
||||||
find_constitution_by_id(com.target_id) as target,
|
|
||||||
find_citizen_by_id(com.created_by_id) as created_by
|
|
||||||
from comment as com
|
|
||||||
where created_by_id = _created_by_id
|
|
||||||
and target_reference = 'constitution'::regclass
|
|
||||||
order by created_at desc,
|
|
||||||
com.created_at desc
|
|
||||||
limit "limit" offset "offset"
|
|
||||||
) as t;
|
|
||||||
end;
|
|
||||||
$$;
|
|
||||||
|
|
||||||
-- drop function if exists find_comments_constitution_by_citizen(uuid, int, int);
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
create or replace function find_reference_by_id(
|
||||||
|
_id uuid,
|
||||||
|
_reference regclass default null,
|
||||||
|
out resource json
|
||||||
|
) language plpgsql as
|
||||||
|
$$
|
||||||
|
begin
|
||||||
|
select
|
||||||
|
case _reference
|
||||||
|
when 'article'::regclass then
|
||||||
|
find_article_by_id(_id)
|
||||||
|
when 'constitution'::regclass then
|
||||||
|
find_article_by_id(_id)
|
||||||
|
else
|
||||||
|
json_build_object('id', _id)
|
||||||
|
end
|
||||||
|
into resource;
|
||||||
|
end;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
-- drop function if exists find_reference_by_id(uuid, regclass, out json);
|
||||||
Reference in New Issue
Block a user