feature #7: add colum parents_ids into comment
This commit is contained in:
@@ -17,7 +17,7 @@ begin
|
|||||||
values (_citizen_id, _target_id, _content, _parent_id)
|
values (_citizen_id, _target_id, _content, _parent_id)
|
||||||
returning comment_on_constitution.id into _id;
|
returning comment_on_constitution.id into _id;
|
||||||
else
|
else
|
||||||
raise exception '% no implemented', reference::text;
|
raise exception 'comment with target as "%", is no implemented', reference::text;
|
||||||
end if;
|
end if;
|
||||||
end;
|
end;
|
||||||
$$;
|
$$;
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ $$;
|
|||||||
create trigger set_constitution_link_trigger
|
create trigger set_constitution_link_trigger
|
||||||
before insert
|
before insert
|
||||||
on article_in_title
|
on article_in_title
|
||||||
|
for each row
|
||||||
execute procedure set_constitution_link();
|
execute procedure set_constitution_link();
|
||||||
|
|
||||||
create table article_relations
|
create table article_relations
|
||||||
@@ -230,11 +231,39 @@ create table comment
|
|||||||
(
|
(
|
||||||
updated_at timestamptz default now() not null check ( updated_at >= created_at ),
|
updated_at timestamptz default now() not null check ( updated_at >= created_at ),
|
||||||
"content" text not null check ( content != '' and length(content) < 4096),
|
"content" text not null check ( content != '' and length(content) < 4096),
|
||||||
parent_id uuid null references comment (id),
|
parent_id uuid references comment (id),
|
||||||
|
parents_ids uuid[],
|
||||||
foreign key (citizen_id) references citizen (id),
|
foreign key (citizen_id) references citizen (id),
|
||||||
primary key (id)
|
primary key (id)
|
||||||
) inherits (extra);
|
) inherits (extra);
|
||||||
|
|
||||||
|
create index comment_parents_ids_idx
|
||||||
|
on comment (parents_ids);
|
||||||
|
|
||||||
|
create or replace function set_comment_parents_ids() returns trigger
|
||||||
|
language plpgsql as
|
||||||
|
$$
|
||||||
|
begin
|
||||||
|
if(new.parent_id is not null) then
|
||||||
|
new.parents_ids = (
|
||||||
|
select com.parents_ids || com.id
|
||||||
|
from "comment" com
|
||||||
|
where com.id = new.parent_id
|
||||||
|
);
|
||||||
|
else
|
||||||
|
new.parents_ids = null;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
return new;
|
||||||
|
end;
|
||||||
|
$$;
|
||||||
|
|
||||||
|
create trigger set_comment_parents_ids_trigger
|
||||||
|
before insert
|
||||||
|
on comment
|
||||||
|
for each row
|
||||||
|
execute procedure set_comment_parents_ids();
|
||||||
|
|
||||||
create table comment_on_article
|
create table comment_on_article
|
||||||
(
|
(
|
||||||
target_reference regclass default 'article'::regclass not null,
|
target_reference regclass default 'article'::regclass not null,
|
||||||
@@ -244,6 +273,15 @@ create table comment_on_article
|
|||||||
primary key (id)
|
primary key (id)
|
||||||
) inherits (comment);
|
) inherits (comment);
|
||||||
|
|
||||||
|
create index comment_on_article_parents_ids_idx
|
||||||
|
on comment_on_article (parents_ids);
|
||||||
|
|
||||||
|
create trigger set_comment_on_article_parents_ids_trigger
|
||||||
|
before insert
|
||||||
|
on comment_on_article
|
||||||
|
for each row
|
||||||
|
execute procedure set_comment_parents_ids();
|
||||||
|
|
||||||
create table comment_on_constitution
|
create table comment_on_constitution
|
||||||
(
|
(
|
||||||
target_reference regclass default 'constitution'::regclass not null,
|
target_reference regclass default 'constitution'::regclass not null,
|
||||||
@@ -253,6 +291,15 @@ create table comment_on_constitution
|
|||||||
primary key (id)
|
primary key (id)
|
||||||
) inherits (comment);
|
) inherits (comment);
|
||||||
|
|
||||||
|
create index comment_on_constitution_parents_ids_idx
|
||||||
|
on comment_on_constitution (parents_ids);
|
||||||
|
|
||||||
|
create trigger set_comment_on_constitution_parents_ids_trigger
|
||||||
|
before insert
|
||||||
|
on comment_on_constitution
|
||||||
|
for each row
|
||||||
|
execute procedure set_comment_parents_ids();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
create table vote
|
create table vote
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ declare
|
|||||||
}
|
}
|
||||||
$json$;
|
$json$;
|
||||||
_comment_id uuid;
|
_comment_id uuid;
|
||||||
|
_comment_id_response uuid;
|
||||||
|
_comment_id_response2 uuid;
|
||||||
_selected_comments json;
|
_selected_comments json;
|
||||||
_selected_comments_total int;
|
_selected_comments_total int;
|
||||||
begin
|
begin
|
||||||
@@ -78,6 +80,27 @@ begin
|
|||||||
from find_comments_constitution_by_citizen(_citizen_id);
|
from find_comments_constitution_by_citizen(_citizen_id);
|
||||||
assert (_selected_comments_total = 0), 'the number of comments for this citizen must be 0, "' || _selected_comments_total || '" returned';
|
assert (_selected_comments_total = 0), 'the number of comments for this citizen must be 0, "' || _selected_comments_total || '" returned';
|
||||||
|
|
||||||
|
|
||||||
|
select "comment"(
|
||||||
|
reference => 'article'::regclass,
|
||||||
|
target_id => (created_article->>'id')::uuid,
|
||||||
|
citizen_id => _citizen_id,
|
||||||
|
content => 'No is not exist'::text,
|
||||||
|
_parent_id => _comment_id::uuid
|
||||||
|
) into _comment_id_response;
|
||||||
|
|
||||||
|
select "comment"(
|
||||||
|
reference => 'article'::regclass,
|
||||||
|
target_id => (created_article->>'id')::uuid,
|
||||||
|
citizen_id => _citizen_id,
|
||||||
|
content => 'No is not exist'::text,
|
||||||
|
_parent_id => _comment_id_response::uuid
|
||||||
|
) into _comment_id_response2;
|
||||||
|
assert (select count(*) = 3 from "comment"), 'comment must be inserted';
|
||||||
|
assert (select com.parents_ids @> ARRAY[_comment_id] from "comment" com where id = _comment_id_response), 'parents_ids not contain "' || _comment_id::text || '" ' || (select com.parents_ids::text[] from "comment" com where id = _comment_id_response);
|
||||||
|
assert (select com.parents_ids @> ARRAY[_comment_id_response] from "comment" com where id = _comment_id_response2), 'parents_ids not contain "' || _comment_id_response::text || '" ' || (select com.parents_ids::text[] from "comment" com where id = _comment_id_response2);
|
||||||
|
assert (select com.parents_ids @> ARRAY[_comment_id] from "comment" com where id = _comment_id_response2), 'parents_ids not contain "' || _comment_id::text || '" ' || (select com.parents_ids::text[] from "comment" com where id = _comment_id_response2);
|
||||||
|
|
||||||
-- delete comment and context
|
-- delete comment and context
|
||||||
delete from "comment";
|
delete from "comment";
|
||||||
delete from article;
|
delete from article;
|
||||||
|
|||||||
Reference in New Issue
Block a user