# `Chronicle.Jobs`
[🔗](https://github.com/Cratis/Chronicle.Elixir/blob/main/lib/chronicle/jobs.ex#L4)

Idiomatic API for working with Chronicle jobs.

Jobs represent long-running Chronicle operations such as replays and rebuilds.
This module lets you inspect current jobs, inspect their steps, and control
their lifecycle.

## Usage

    {:ok, jobs} = Chronicle.Jobs.all()
    {:ok, job} = Chronicle.Jobs.get("8a6f5a0c-0fbf-42bd-8db0-a60f9a449b11")
    :ok = Chronicle.Jobs.stop("8a6f5a0c-0fbf-42bd-8db0-a60f9a449b11")

## Options

  * `:client` — the client name (default: `Chronicle.Client`)
  * `:namespace` — overrides the client's default namespace

# `job_id`

```elixir
@type job_id() :: String.t()
```

# `all`

```elixir
@spec all(keyword()) :: {:ok, [Chronicle.Jobs.Job.t()]} | {:error, term()}
```

Gets all jobs for the configured event store namespace.

# `delete`

```elixir
@spec delete(job_id(), keyword()) :: :ok | {:error, term()}
```

Deletes a job.

# `get`

```elixir
@spec get(job_id(), keyword()) ::
  {:ok, Chronicle.Jobs.Job.t() | nil} | {:error, term()}
```

Gets a single job by identifier.

The kernel has no single-job query - it serves the whole set and expects the
caller to pick. Returns `{:ok, nil}` when the job does not exist.

# `get_job`

```elixir
@spec get_job(job_id(), keyword()) ::
  {:ok, Chronicle.Jobs.Job.t() | nil} | {:error, term()}
```

Compatibility alias for `get/2`.

# `get_job_steps`

```elixir
@spec get_job_steps(job_id(), keyword()) ::
  {:ok, [Chronicle.Jobs.JobStep.t()]} | {:error, term()}
```

Compatibility alias for `steps/2`.

# `get_jobs`

```elixir
@spec get_jobs(keyword()) :: {:ok, [Chronicle.Jobs.Job.t()]} | {:error, term()}
```

Compatibility alias for `all/1`.

# `resume`

```elixir
@spec resume(job_id(), keyword()) :: :ok | {:error, term()}
```

Resumes a stopped job.

# `steps`

```elixir
@spec steps(job_id(), keyword()) ::
  {:ok, [Chronicle.Jobs.JobStep.t()]} | {:error, term()}
```

Gets all steps for a specific job.

# `stop`

```elixir
@spec stop(job_id(), keyword()) :: :ok | {:error, term()}
```

Stops a job.

---

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