# `Zizq.CronEntry`
[🔗](https://github.com/zizq-labs/zizq-elixir/blob/v0.8.0/lib/zizq/cron_entry.ex#L4)

One scheduled job within a cron group.

An entry pairs a cron expression with a job to enqueue when it
fires. The job is an ordinary `Zizq.Enqueue`, so anything that can
be enqueued can be scheduled — including one built by a
`Zizq.JobKind` module.

## Fields

  * `:name` — unique within its group.
  * `:expression` — a cron expression, e.g. `"*/15 * * * *"`.
  * `:timezone` — an IANA name, e.g. `"Australia/Melbourne"`. Its
    group's timezone when unset, or the server's own when the group
    does not specify one either.
  * `:paused` — whether this entry is currently suspended.
  * `:job` — the `Zizq.Enqueue` fired on schedule.
  * `:next_enqueue_at`, `:last_enqueue_at` — when it fires next, and
    when it last did. Read-only.
  * `:paused_at`, `:resumed_at` — when it was last suspended and
    resumed. Read-only.

# `t`

```elixir
@type t() :: %Zizq.CronEntry{
  expression: String.t(),
  job: Zizq.Enqueue.t() | nil,
  last_enqueue_at: DateTime.t() | nil,
  name: String.t(),
  next_enqueue_at: DateTime.t() | nil,
  paused: boolean() | nil,
  paused_at: DateTime.t() | nil,
  resumed_at: DateTime.t() | nil,
  timezone: String.t() | nil
}
```

# `new!`

```elixir
@spec new!(t() | keyword() | map()) :: t()
```

Build an entry from a keyword list or map.

`:name`, `:expression` and `:job` are required. The job takes the
same forms `Zizq.enqueue/2` does.

---

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