# `Mailglass.Credo.RawRepoPrefixContract`
[🔗](https://github.com/szTheory/mailglass/blob/v2.7.0/credo_checks/raw_repo_prefix_contract.ex#L1)

## Basics

> #### This check is disabled by default. {: .neutral}
>
> [Learn how to enable it](`e:credo:config_file.html#checks`) via `.credo.exs`.

This check has a base priority of `high` and works with any version of Elixir.

## Explanation

Raw callback repos and Ecto.Multi projection updates that touch mailglass
tables must carry explicit schema prefix opts. Use `Repo.multi_opts()`,
local `schema_opts()`, or a literal `prefix:` option.

## Check-Specific Parameters

Use the following parameters to configure this check:

### `:included_path_prefixes`

  Only production files under these prefixes are linted.

*This parameter defaults to* `["lib/mailglass/", "mailglass_inbound/lib/"]`.

### `:schema_modules`

  Mailglass schemas treated as schema-prefix-sensitive.

*This parameter defaults to* `[Mailglass.Outbound.Delivery, Mailglass.Events.Event, Mailglass.Suppression.Entry, Mailglass.Webhook.WebhookEvent, MailglassInbound.InboundRecords.InboundRecord, MailglassInbound.InboundRecords.InboundEvidence, MailglassInbound.InboundRecords.ExecutionRun, MailglassInbound.InboundRecords.ReplayRun]`.

### `:table_sources`

  String table sources treated as schema-prefix-sensitive.

*This parameter defaults to* `[core: ["mailglass_deliveries", "mailglass_events", "mailglass_suppressions", "mailglass_webhook_events"], inbound: ["mailglass_inbound_records", "mailglass_inbound_evidence", "mailglass_inbound_replay_runs"]]`.

### `:repo_functions`

  Lowercase raw repo functions treated as table access.

*This parameter defaults to* `[:one, :one!, :get, :get!, :get_by, :get_by!, :all, :aggregate, :exists?, :insert, :insert!, :insert_all, :update, :update!, :update_all, :delete, :delete!, :delete_all]`.

### `:multi_functions`

  Ecto.Multi functions that can update projections.

*This parameter defaults to* `[:insert, :insert_all, :update, :update_all, :delete, :delete_all]`.

### `:projection_steps`

  Multi step names known to update mailglass projections.

*This parameter defaults to* `[:delivery, :projection]`.

### `:prefix_helper_functions`

  Local helper functions that return explicit prefix opts.

*This parameter defaults to* `[:schema_opts, :insert_opts]`.

## General Parameters

Like with all checks, [general params](`e:credo:check_params.html`) can be applied.

Parameters can be configured via the [`.credo.exs` config file](`e:credo:config_file.html`).

---

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