Index: openacs-4/packages/faq/sql/postgresql/faq-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/faq/sql/postgresql/faq-create.sql,v diff -u -r1.4 -r1.5 --- openacs-4/packages/faq/sql/postgresql/faq-create.sql 17 May 2003 10:33:37 -0000 1.4 +++ openacs-4/packages/faq/sql/postgresql/faq-create.sql 1 Apr 2004 22:52:46 -0000 1.5 @@ -1,8 +1,9 @@ --- @jennie.ybos.net --- @wirth.ybos.net ---openacs port @samir.symphinity.com - - +-- Datamodel create for faq +-- +-- @author @jennie.ybos.net,@wirth.ybos.net,openacs port @samir.symphinity.com +-- +-- @cvs-id $Id$ +-- create function inline_0 () returns integer as ' begin @@ -16,14 +17,13 @@ null, -- package_name ''f'', -- abstract_p null, -- type_extension_table - ''faq.name'' -- name_method + ''faq__name'' -- name_method ); return 0; end;' language 'plpgsql'; select inline_0 (); - drop function inline_0 (); @@ -75,165 +75,8 @@ sort_key integer not null ); -create function faq__new_q_and_a (integer,integer,varchar,varchar,integer,varchar,timestamptz,integer,varchar,integer - ) returns integer as -' -declare - p_entry_id alias for $1; -- default null, - p_faq_id alias for $2; - p_question alias for $3; - p_answer alias for $4; - p_sort_key alias for $5; - p_object_type alias for $6; -- default faq_q_and_a - p_creation_date alias for $7; --in acs_objects.creation_date%TYPE default sysdate, - p_creation_user alias for $8; --in acs_objects.creation_user%TYPE default null, - p_creation_ip alias for $9; -- in acs_objects.creation_ip%TYPE default null, - p_context_id alias for $10; --in acs_objects.context_id%TYPE default null - v_entry_id faq_q_and_as.entry_id%TYPE; -begin - v_entry_id := acs_object__new ( - p_entry_id, - p_object_type, - p_creation_date, - p_creation_user, - p_creation_ip, - p_context_id - ); - insert into faq_q_and_as - (entry_id, faq_id, question, answer, sort_key) - values - (v_entry_id, p_faq_id, p_question, p_answer, p_sort_key); - return v_entry_id; -end;' language 'plpgsql'; -create function faq__delete_q_and_a (integer) -returns integer as ' -declare - p_entry_id alias for $1; -begin - delete from faq_q_and_as where entry_id = p_entry_id; - raise NOTICE ''Deleting FAQ_Q_and_A...''; - PERFORM acs_object__delete(p_entry_id); - - return 0; - -end;' language 'plpgsql'; - - -create function faq__new_faq (integer, varchar, boolean,varchar,timestamptz,integer,varchar,integer ) -returns integer as ' -declare - p_faq_id alias for $1; - p_faq_name alias for $2; - p_separate_p alias for $3; - p_object_type alias for $4; - p_creation_date alias for $5; - p_creation_user alias for $6; - p_creation_ip alias for $7; - p_context_id alias for $8; - v_faq_id faqs.faq_id%TYPE; -begin - - v_faq_id := acs_object__new ( - p_faq_id, - p_object_type, - p_creation_date, - p_creation_user, - p_creation_ip, - p_context_id - ); - - insert into faqs - (faq_id, faq_name,separate_p) - values - (v_faq_id, p_faq_name,p_separate_p); - -return v_faq_id; - -end;' language 'plpgsql'; - - -create function faq__delete_faq (integer) -returns integer as ' -declare - p_faq_id alias for $1; - del_rec record; -begin - -- Because q_and_as are objects, we need to - -- loop through a list of them, and call an explicit - -- delete function for each one. (i.e. each - -- entry_id) - for del_rec in select entry_id from faq_q_and_as - where faq_id = p_faq_id - loop - PERFORM faq__delete_q_and_a(del_rec.entry_id); - end loop; - - delete from faqs where faq_id = p_faq_id; - - PERFORM acs_object__delete(p_faq_id); - - return 0; - -end;' language 'plpgsql'; - -create function faq__name(integer) -returns varchar as ' -declare - p_faq_id alias for $1; - v_faq_name faqs.faq_name%TYPE; -begin - select faq_name into v_faq_name - from faqs - where faq_id = p_faq_id; - - return v_faq_name; -end; -' language 'plpgsql'; - -create function faq__clone (integer,integer) -returns integer as ' -declare - p_new_package_id alias for $1; --default null, - p_old_package_id alias for $2; --default null - v_faq_id faqs.faq_id%TYPE; - one_faq record; - entry record; - -begin - -- get all the faqs belonging to the old package, - -- and create new faqs for the new package - for one_faq in select * - from acs_objects o, faqs f - where o.object_id = f.faq_id - and o.context_id = p_old_package_id - loop - v_faq_id := faq__new_faq ( - one_faq.faq_name, - one_faq.separate_p, - p_new_package_id - ); - - for entry in select * from faq_q_and_as - where faq_id = one_faq.faq_id - loop - - perform faq__new_q_and_a ( - entry.faq_id, - v_faq_id, - entry.question, - entry.answer, - entry.sort_key - ); - end loop; - end loop; - return 0; - end; -' language 'plpgsql'; - - - select acs_privilege__create_privilege('faq_view_faq'); select acs_privilege__create_privilege('faq_create_faq'); select acs_privilege__create_privilege('faq_delete_faq'); @@ -287,7 +130,7 @@ -- give the public the power to view q_and_as by default PERFORM acs_permission__grant_permission ( default_context,the_public, ''faq_view_q_and_a''); - + return 0; end;' language 'plpgsql'; @@ -298,6 +141,7 @@ drop function inline_2 (); +\i faq-package-create.sql