--
-- workflow__add_transition/6
--
create or replace function workflow__add_transition(
  character varying,
  character varying,
  character varying,
  character varying,
  integer,
  character varying
) returns int4 as $$

declare
  add_transition__workflow_key     alias for $1;  
  add_transition__transition_key   alias for $2;  
  add_transition__transition_name  alias for $3;  
  add_transition__role_key	   alias for $4;
  add_transition__sort_order       alias for $5;  
  add_transition__trigger_type     alias for $6;  -- default 'user'
  v_sort_order			   integer;
begin
        if add_transition__sort_order is null then
            select coalesce(max(sort_order)+1, 1)
              into v_sort_order
              from wf_transitions
             where workflow_key = add_transition__workflow_key;
        else
            v_sort_order := add_transition__sort_order;
        end if;
	insert into wf_transitions (
            workflow_key, 
            transition_key, 
            transition_name, 
            role_key,
            sort_order, 
            trigger_type
        ) values (
            add_transition__workflow_key, 
            add_transition__transition_key, 
            add_transition__transition_name,
            add_transition__role_key,
	    v_sort_order, 
            add_transition__trigger_type
        );

        return 0; 
end;$$ language plpgsql;