# `DDD.Config`
[🔗](https://github.com/blackuprise/vicander/blob/v0.1.1/lib/ddd/operations/config.ex#L1)

The framework's application configuration, in one place.

    # config/config.exs of your application
    config :vicander, repo: MyApp.Repo

`repo` is the `Ecto.Repo` the framework uses unless a command, query, handler or projection
names another with `repo:` (for example `use DDD.Command, repo: MyApp.OtherRepo`). It is read
when the code runs, not when it compiles, so a test can change it.

The other keys are documented where they apply:

  * `config :vicander, :outbox, ...` - retries and backoff of the outbox (`DDD.Outbox.Poller`)
  * `config :vicander, :dead_letters, ...` - what to do with events that gave up
    (`DDD.Outbox.DeadLetterPolicy`)
  * `config :vicander, :health, ...` - thresholds and projections (`DDD.Health`)

# `repo`

```elixir
@spec repo(:default | nil | module()) :: module() | nil
```

Resolve a `repo:` option: `:default` is the configured repo, `nil` stays `nil` (no
transaction), and a module is itself.

# `repo!`

```elixir
@spec repo!() :: module()
```

The configured repo. Raises, saying how to configure it, when there is none.

---

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