--
-- rel_segment__get_or_new/2
--
create or replace function rel_segment__get_or_new(
integer,
character varying
) returns int4 as $$
declare
gid alias for $1;
typ alias for $2;
begin
return rel_segment__get_or_new(gid,typ,null);
end;$$ language plpgsql;
--
-- rel_segment__get_or_new/3
--
create or replace function rel_segment__get_or_new(
integer,
character varying,
character varying
) returns int4 as $$
declare
get_or_new__group_id alias for $1;
get_or_new__rel_type alias for $2;
segment_name alias for $3; -- default null
v_segment_id rel_segments.segment_id%TYPE;
v_segment_name rel_segments.segment_name%TYPE;
begin
v_segment_id := rel_segment__get(get_or_new__group_id,get_or_new__rel_type);
if v_segment_id is null then
if segment_name is not null then
v_segment_name := segment_name;
else
select groups.group_name || ' - ' || acs_object_types.pretty_name ||
' segment'
into v_segment_name
from groups, acs_object_types
where groups.group_id = get_or_new__group_id
and acs_object_types.object_type = get_or_new__rel_type;
end if;
v_segment_id := rel_segment__new (
null,
'rel_segment',
now(),
null,
null,
null,
null,
v_segment_name,
get_or_new__group_id,
get_or_new__rel_type,
get_or_new__group_id
);
end if;
return v_segment_id;
end;$$ language plpgsql;