# `DripDrop.Dispatch.Steps`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/dispatch/steps.ex#L1)

Creates and enqueues step execution rows for enrollments.

# `reschedule`

```elixir
@spec reschedule(Ecto.Schema.t(), DateTime.t()) ::
  {:ok, Ecto.Schema.t()} | {:error, term()}
```

Moves a step execution back to scheduled state at a new time.

# `schedule`

```elixir
@spec schedule(Ecto.Schema.t(), Ecto.Schema.t(), keyword()) ::
  {:ok, Ecto.Schema.t()} | {:error, term()}
```

Creates and enqueues one step execution for an enrollment.

# `scheduled_for`

```elixir
@spec scheduled_for(Ecto.Schema.t()) :: DateTime.t()
```

Calculates the next scheduled time for a step from its timing config.

# `seed_for_step`

```elixir
@spec seed_for_step(Ecto.Schema.t(), DateTime.t(), keyword()) ::
  {:ok, [Ecto.Schema.t()]} | {:error, term()}
```

Bulk seeds executions for active enrollments eligible for a step.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
