-- -- packages/acs-subsite/sql/application_groups-create.sql -- -- @author oumi@arsdigita.com -- @creation-date 2000-02-02 -- @cvs-id $Id: application-groups-create.sql,v 1.14 2015/04/27 15:28:17 victorg Exp $ -- ------------------------ -- APPLICATION GROUPS -- ------------------------ select acs_object_type__create_type ( 'application_group', 'Application Group', 'Application Groups', 'group', 'application_groups', 'group_id', 'application_group', 'f', 'group_types', 'acs_group__name' ); create table application_groups ( group_id integer constraint application_groups_group_id_fk references groups (group_id) on delete cascade constraint application_groups_group_id_pk primary key, package_id integer constraint application_groups_package_id_fk references apm_packages, constraint application_groups_package_id_un unique (package_id) ); -- old define_function_args('application_group__new','group_id,object_type;application_group,creation_date;now(),creation_user,creation_ip,email,url,group_name,package_id,join_policy,context_id') -- new select define_function_args('application_group__new','group_id,object_type;application_group,creation_date;now(),creation_user;null,creation_ip;null,email;null,url;null,group_name,package_id,join_policy,context_id;null'); -- -- procedure application_group__new/11 -- CREATE OR REPLACE FUNCTION application_group__new( new__group_id integer, new__object_type varchar, -- default 'application_group', new__creation_date timestamptz, -- default sysdate, -- default 'now()' new__creation_user integer, -- default null, new__creation_ip varchar, -- default null, new__email varchar, -- default null, new__url varchar, -- default null, new__group_name varchar, new__package_id integer, new__join_policy varchar, new__context_id integer -- default null ) RETURNS integer AS $$ DECLARE v_group_id application_groups.group_id%TYPE; BEGIN v_group_id := acs_group__new ( new__group_id, new__object_type, new__creation_date, new__creation_user, new__creation_ip, new__email, new__url, new__group_name, new__join_policy, new__context_id ); insert into application_groups (group_id, package_id) values (v_group_id, new__package_id); return v_group_id; END; $$ LANGUAGE plpgsql; -- added select define_function_args('application_group__delete','group_id'); -- -- procedure application_group__delete/1 -- CREATE OR REPLACE FUNCTION application_group__delete( group_id integer ) RETURNS integer AS $$ DECLARE BEGIN PERFORM acs_group__delete(group_id); return 0; END; $$ LANGUAGE plpgsql; -- added select define_function_args('application_group__group_id_from_package_id','package_id,no_complain_p;f'); -- -- procedure application_group__group_id_from_package_id/2 -- CREATE OR REPLACE FUNCTION application_group__group_id_from_package_id( group_id_from_package_id__package_id integer, group_id_from_package_id__no_complain_p boolean -- default 'f' ) RETURNS integer AS $$ DECLARE v_group_id application_groups.group_id%TYPE; v_object_name varchar; BEGIN select group_id into v_group_id from application_groups where package_id = group_id_from_package_id__package_id; -- TODO: does this shortcut the exception in Oracle? -- return v_group_id; if not found then if group_id_from_package_id__no_complain_p != 't' then v_object_name := acs_object__name(group_id_from_package_id__package_id); raise EXCEPTION '-20000: No group_id found for package % (%)', group_id_from_package_id__package_id, v_object_name; end if; return null; else return v_group_id; end if; END; $$ LANGUAGE plpgsql stable; insert into group_type_rels (group_rel_type_id, group_type, rel_type) values (nextval('t_acs_object_id_seq'), 'application_group', 'composition_rel'); insert into group_type_rels (group_rel_type_id, group_type, rel_type) values (nextval('t_acs_object_id_seq'), 'application_group', 'membership_rel'); insert into group_type_rels (group_rel_type_id, group_type, rel_type) values (nextval('t_acs_object_id_seq'), 'application_group', 'admin_rel'); ----------- -- Views -- ----------- create view application_group_element_map as select g.package_id, g.group_id, m.element_id, m.container_id, m.rel_id, m.rel_type, m.ancestor_rel_type from application_groups g, group_element_map m where g.group_id = m.group_id; create view app_group_distinct_element_map as select distinct package_id, group_id, element_id from application_group_element_map; create view app_group_distinct_rel_map as select distinct package_id, group_id, rel_id, rel_type, ancestor_rel_type from application_group_element_map; create view application_group_segments as select g.package_id, s.segment_id, s.group_id, s.rel_type, s.segment_name from application_groups g, group_element_map m, rel_segments s where g.group_id = m.group_id and m.element_id = s.group_id UNION ALL select g.package_id, s.segment_id, s.group_id, s.rel_type, s.segment_name from application_groups g, rel_segments s where g.group_id = s.group_id;