--
-- packages/acs-kernel/sql/rel-segments-create.sql
--
-- @author Oumi Mehrotra oumi@arsdigita.com
-- @creation-date 2000-11-22
-- @cvs-id $Id: rel-segments-body-create.sql,v 1.16 2011/07/07 10:46:02 gustafn Exp $
-- Copyright (C) 1999-2000 ArsDigita Corporation
-- This is free software distributed under the terms of the GNU Public
-- License. Full text of the license is available from the GNU Project:
-- http://www.fsf.org/copyleft/gpl.html
------------------
-- PACKAGE BODY --
------------------
-- rel_segment__new -- full version
-- added
select define_function_args('rel_segment__new','segment_id;null,object_type;rel_segment,creation_date;now(),creation_user;null,creation_ip;null,email;null,url;null,segment_name,group_id,rel_type,context_id;null');
--
-- procedure rel_segment__new/11
--
CREATE OR REPLACE FUNCTION rel_segment__new(
new__segment_id integer, -- default null
object_type varchar, -- default 'rel_segment'
creation_date timestamptz, -- default now()
creation_user integer, -- default null
creation_ip varchar, -- default null
email varchar, -- default null
url varchar, -- default null
new__segment_name varchar,
new__group_id integer,
new__rel_type varchar,
context_id integer -- default null
) RETURNS integer AS $$
DECLARE
v_segment_id rel_segments.segment_id%TYPE;
BEGIN
v_segment_id :=
party__new(new__segment_id, object_type, creation_date, creation_user,
creation_ip, email, url, context_id);
update acs_objects
set title = new__segment_name
where object_id = v_segment_id;
insert into rel_segments
(segment_id, segment_name, group_id, rel_type)
values
(v_segment_id, new__segment_name, new__group_id, new__rel_type);
return v_segment_id;
END;
$$ LANGUAGE plpgsql;
-- rel_segment__new -- overloaded version for specifying only non-default values
--
-- procedure rel_segment__new/3
--
CREATE OR REPLACE FUNCTION rel_segment__new(
new__segment_name varchar,
new__group_id integer,
new__rel_type varchar
) RETURNS integer AS $$
DECLARE
v_segment_id rel_segments.segment_id%TYPE;
BEGIN
v_segment_id := rel_segment__new(null, 'rel_segment', now(), null, null, null, null, new__segment_name, new__group_id, new__rel_type, null);
return v_segment_id;
END;
$$ LANGUAGE plpgsql;
-- procedure delete
-- added
select define_function_args('rel_segment__delete','segment_id');
--
-- procedure rel_segment__delete/1
--
CREATE OR REPLACE FUNCTION rel_segment__delete(
delete__segment_id integer
) RETURNS integer AS $$
DECLARE
row record;
BEGIN
-- remove all constraints on this segment
for row in select constraint_id
from rel_constraints
where rel_segment = delete__segment_id
LOOP
PERFORM rel_constraint__delete(row.constraint_id);
end loop;
PERFORM party__delete(delete__segment_id);
return 0;
END;
$$ LANGUAGE plpgsql;
-- function get
-- added
select define_function_args('rel_segment__get','group_id,rel_type');
--
-- procedure rel_segment__get/2
--
CREATE OR REPLACE FUNCTION rel_segment__get(
get__group_id integer,
get__rel_type varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return min(segment_id)
from rel_segments
where group_id = get__group_id
and rel_type = get__rel_type;
END;
$$ LANGUAGE plpgsql stable strict;
-- added
--
-- procedure rel_segment__get_or_new/2
--
CREATE OR REPLACE FUNCTION rel_segment__get_or_new(
gid integer,
typ varchar
) RETURNS integer AS $$
DECLARE
BEGIN
return rel_segment__get_or_new(gid,typ,null);
END;
$$ LANGUAGE plpgsql;
-- function get_or_new
-- added
select define_function_args('rel_segment__get_or_new','group_id,rel_type,segment_name;null');
--
-- procedure rel_segment__get_or_new/3
--
CREATE OR REPLACE FUNCTION rel_segment__get_or_new(
get_or_new__group_id integer,
get_or_new__rel_type varchar,
segment_name varchar -- default null
) RETURNS integer AS $$
DECLARE
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;
-- function name
-- added
select define_function_args('rel_segment__name','segment_id');
--
-- procedure rel_segment__name/1
--
CREATE OR REPLACE FUNCTION rel_segment__name(
name__segment_id integer
) RETURNS varchar AS $$
DECLARE
name__segment_name varchar(200);
BEGIN
return segment_name
from rel_segments
where segment_id = name__segment_id;
END;
$$ LANGUAGE plpgsql stable strict;
-- show errors