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;
