--
-- content_type__register_relation_type/5
--
create or replace function content_type__register_relation_type(
character varying,
character varying,
character varying,
integer,
integer
) returns int4 as $$
declare
register_relation_type__content_type alias for $1;
register_relation_type__target_type alias for $2;
register_relation_type__relation_tag alias for $3; -- default 'generic'
register_relation_type__min_n alias for $4; -- default 0
register_relation_type__max_n alias for $5; -- default null
v_exists integer;
begin
-- check if the relation type exists
select
count(*) into v_exists
from
cr_type_relations
where
content_type = register_relation_type__content_type
and
target_type = register_relation_type__target_type
and
relation_tag = register_relation_type__relation_tag;
-- if the relation type does not exist, insert a row into cr_type_relations
if v_exists = 0 then
insert into cr_type_relations (
content_type, target_type, relation_tag, min_n, max_n
) values (
register_relation_type__content_type,
register_relation_type__target_type,
register_relation_type__relation_tag,
register_relation_type__min_n, register_relation_type__max_n
);
-- otherwise, update the row in cr_type_relations
else
update cr_type_relations set
min_n = register_relation_type__min_n,
max_n = register_relation_type__max_n
where
content_type = register_relation_type__content_type
and
target_type = register_relation_type__target_type
and
relation_tag = register_relation_type__relation_tag;
end if;
return 0;
end;$$ language plpgsql;