Enqueues durable workflow step execution.
The workflow contract stays declarative while this module bridges runtime intent into Oban-backed execution jobs.
Summary
Types
@type dispatch_error() :: Ecto.Changeset.t() | term()
@type dispatch_event() :: {:run_dispatched, SquidMesh.Run.t(), Oban.Job.t(), atom(), pos_integer() | nil}
@type dispatch_opts() :: [{:schedule_in, pos_integer()}]
@type dispatch_target() :: atom()
Functions
@spec dispatch_run(SquidMesh.Config.t(), SquidMesh.Run.t(), dispatch_opts()) :: {:ok, Oban.Job.t() | [Oban.Job.t()]} | {:error, dispatch_error()}
@spec dispatch_run_with_events( SquidMesh.Config.t(), SquidMesh.Run.t(), dispatch_opts() ) :: {:ok, Oban.Job.t() | [Oban.Job.t()], [dispatch_event()]} | {:error, dispatch_error()}
@spec dispatch_steps( SquidMesh.Config.t(), SquidMesh.Run.t(), [dispatch_target()], keyword() ) :: {:ok, Oban.Job.t() | [Oban.Job.t()]} | {:error, dispatch_error()}
@spec dispatch_steps_with_events( SquidMesh.Config.t(), SquidMesh.Run.t(), [dispatch_target()], keyword() ) :: {:ok, Oban.Job.t() | [Oban.Job.t()], [dispatch_event()]} | {:error, dispatch_error()}