25 lines
1.0 KiB
PL/PgSQL
25 lines
1.0 KiB
PL/PgSQL
create or replace function comment(reference regclass, target_id uuid, created_by_id uuid, content text, parent_id uuid default null, out id uuid)
|
|
language plpgsql as
|
|
$$
|
|
declare
|
|
_created_by_id alias for created_by_id;
|
|
_target_id alias for target_id;
|
|
_content alias for content;
|
|
_parent_id alias for parent_id;
|
|
_id alias for id;
|
|
begin
|
|
if reference = 'article'::regclass then
|
|
insert into comment_on_article (created_by_id, target_id, content, parent_id)
|
|
values (_created_by_id, _target_id, _content, _parent_id)
|
|
returning comment_on_article.id into _id;
|
|
elseif reference = 'constitution'::regclass then
|
|
insert into comment_on_constitution (created_by_id, target_id, content, parent_id)
|
|
values (_created_by_id, _target_id, _content, _parent_id)
|
|
returning comment_on_constitution.id into _id;
|
|
else
|
|
raise exception 'comment with target as "%", is no implemented', reference::text;
|
|
end if;
|
|
end;
|
|
$$;
|
|
|
|
-- drop function if exists comment(regclass, uuid, uuid, text, uuid); |