Index: openacs-4/packages/workflow/sql/postgresql/upgrade/upgrade-1.2-2.0d1.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/workflow/sql/postgresql/upgrade/upgrade-1.2-2.0d1.sql,v diff -u -N -r1.13 -r1.13.2.1 --- openacs-4/packages/workflow/sql/postgresql/upgrade/upgrade-1.2-2.0d1.sql 30 Jan 2004 09:46:05 -0000 1.13 +++ openacs-4/packages/workflow/sql/postgresql/upgrade/upgrade-1.2-2.0d1.sql 18 Feb 2005 13:47:33 -0000 1.13.2.1 @@ -8,6 +8,149 @@ -- Fixing various problems and omissions with the old data model ---------------------------------------------------------------------- +-- Loading old upgrades from other scripts. + +alter table workflows + add description text; + +alter table workflows + add description_mime_type varchar(200); + +alter table workflows + alter column description_mime_type set default 'text/plain'; + +-- +-- Fixes case deletion, which can now be done completely through cascading delete +-- Also adds missing upgrade scripts from that bug fix +-- +-- @author Lars Pind (lars@collaboraid.biz) +-- +-- @cvs-id $Id$ + +create or replace function workflow_case_pkg__delete (integer) +returns integer as ' +declare + delete_case_id alias for $1; + rec record; +begin + -- All workflow data cascades from the case id + delete from workflow_cases + where case_id = delete_case_id; + + return 0; +end;' language 'plpgsql'; + + + +create or replace function workflow_case_log_entry__new ( + integer, -- entry_id + varchar, -- content_type + integer, -- case_id + integer, -- action_id + varchar, -- comment + varchar, -- comment_mime_type + integer, -- creation_user + varchar -- creation_ip +) returns integer as ' +declare + p_item_id alias for $1; + p_content_type alias for $2; + p_case_id alias for $3; + p_action_id alias for $4; + p_comment alias for $5; + p_comment_mime_type alias for $6; + p_creation_user alias for $7; + p_creation_ip alias for $8; + + v_name varchar; + v_action_short_name varchar; + v_action_pretty_past_tense varchar; + v_case_object_id integer; + v_item_id integer; + v_revision_id integer; +begin + select short_name, pretty_past_tense + into v_action_short_name, v_action_pretty_past_tense + from workflow_actions + where action_id = p_action_id; + + -- use case object as context_id + select object_id + into v_case_object_id + from workflow_cases + where case_id = p_case_id; + + -- build the unique name + if p_item_id is not null then + v_item_id := p_item_id; + else + select nextval + into v_item_id + from acs_object_id_seq; + end if; + v_name := v_action_short_name || '' '' || v_item_id; + + v_item_id := content_item__new ( + v_item_id, -- item_id + v_name, -- name + v_case_object_id, -- parent_id + v_action_pretty_past_tense, -- title + now(), -- creation_date + p_creation_user, -- creation_user + v_case_object_id, -- context_id + p_creation_ip, -- creation_ip + ''t'', -- is_live + p_comment_mime_type, -- mime_type + p_comment, -- text + ''text'', -- storage_type + ''t'', -- security_inherit_p + ''CR_FILES'', -- storage_area_key + ''content_item'', -- item_subtype + p_content_type -- content_type + ); + + -- insert the row into the single-column entry revision table + select content_item__get_live_revision (v_item_id) + into v_revision_id; + + insert into workflow_case_log_rev (entry_rev_id) + values (v_revision_id); + + -- insert into workflow-case-log + insert into workflow_case_log (entry_id, case_id, action_id) + values (v_item_id, p_case_id, p_action_id); + + -- return id of newly created item + return v_item_id; +end;' language 'plpgsql'; + + +-- Now change parent_id of existing cases + +create or replace function inline_0() returns integer as ' +declare + rec record; +begin + for rec in select c.object_id, + l.entry_id + from workflow_cases c, + workflow_case_log l + where c.case_id = l.case_id + loop + update cr_items + set parent_id = rec.object_id + where item_id = rec.entry_id; + end loop; + + return 0; +end;' language 'plpgsql'; + +select inline_0(); + +drop function inline_0(); + + + -- Missing unique constraints on names -- TODO: Test these alter table workflow_roles add constraint wf_roles_short_name_un unique (workflow_id, short_name); @@ -33,7 +176,7 @@ -- Adding unique constraint on workflow fsm enabled in actions -- This could cause upgrades to fail, if there are in fact duplicates, so let's pray that there aren't -alter table workflow_fsm_action_en_in_st add constraint workflow_fsm_action_en_in_st_pk primary key (action_id, state_id); +-- alter table workflow_fsm_action_en_in_st add constraint workflow_fsm_action_en_in_st_pk primary key (action_id, state_id); -- Workflow deputies should use timestamp, not date alter table workflow_deputies rename column start_date to start_date_old;