# `Fleet.Job`
[🔗](https://github.com/kuku/fleet/blob/main/lib/fleet/job.ex#L1)

Represents a unit of work to be processed by a `Fleet.Worker`.

# `t`

```elixir
@type t() :: %Fleet.Job{
  args: map() | list() | term(),
  attempt: non_neg_integer(),
  batch_id: integer() | nil,
  errors: list(),
  id: integer() | nil,
  inserted_at: DateTime.t() | nil,
  max_attempts: pos_integer(),
  priority: integer(),
  queue: String.t(),
  scheduled_at: DateTime.t() | nil,
  state: atom(),
  tags: [String.t()],
  worker: module() | String.t()
}
```

# `from_message`

```elixir
@spec from_message(map()) :: {:ok, t()} | {:error, term()}
```

Decodes a raw PgQue message map into a structured `Fleet.Job`.

# `new`

```elixir
@spec new(module() | String.t(), term(), keyword()) :: t()
```

Constructs a new `Fleet.Job` struct.

## Options

  * `:queue` - Queue name (string or atom).
  * `:max_attempts` - Maximum number of retries before dead-lettering (default 5).
  * `:tags` - List of string tags.
  * `:priority` - Priority integer.
  * `:scheduled_at` - DateTime when the job should be executed.

# `to_payload`

```elixir
@spec to_payload(t()) :: String.t()
```

Encodes a `Fleet.Job` to a JSON-compatible map for queue serialization.

---

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