--
-- workflow_case__set_case_deadline/3
--
create or replace function workflow_case__set_case_deadline(
  integer,
  character varying,
  timestamp with time zone
) returns int4 as $$

declare
  set_case_deadline__case_id		alias for $1;
  set_case_deadline__transition_key	alias for $2;
  set_case_deadline__deadline		alias for $3;
  v_workflow_key			wf_workflows.workflow_key%TYPE;
begin
        -- delete the current deadline row
        delete
          from wf_case_deadlines
         where case_id = set_case_deadline__case_id
           and transition_key = set_case_deadline__transition_key;

        if set_case_deadline__deadline is not null then
            -- get some info
            select workflow_key
              into v_workflow_key
              from wf_cases
             where case_id = set_case_deadline__case_id;

            -- insert new deadline row
            insert into wf_case_deadlines (
                case_id,
                workflow_key,
                transition_key,
                deadline
            ) values (
                set_case_deadline__case_id,
                v_workflow_key,
                set_case_deadline__transition_key,
                set_case_deadline__deadline
            );
        end if;
  return 0;
end;$$ language plpgsql;