# `Mutare.Ecto.RepoAggregate`
[🔗](https://github.com/foxbenjaminfox/mutare_ecto/blob/v0.4.2/lib/mutare/ecto/repo_aggregate.ex#L1)

Swap the aggregate of a `Repo.aggregate/3` call along an SQL-meaningful ladder —
`:sum`↔`:avg`, `:min`↔`:max`. A surviving mutant means no test distinguishes, say, the
sum of a column from its average: the aggregate is computed but its *kind* is unchecked.

`:count` is deliberately left alone, here as in the query-side catalog — see
`Mutare.Ecto.Aggregate`.

Matched by resolving the call's module to one of the configured `repo:` modules (so the direct
`MyApp.Repo.aggregate`, an aliased `Repo.aggregate`, and an imported form all match) and
the function to `aggregate`. A piped `q |> Repo.aggregate(:sum, :col)` reaches the plugin as
the direct call, its queryable at argument 0, so the aggregate atom sits at the same position
in both spellings.

# `mutations`

```elixir
@spec mutations(Macro.t(), Mutare.Ecto.Context.t()) :: [Mutare.Ecto.Tag.t()]
```

Aggregate-swap mutations for a `Repo.aggregate/3` node as labelled `:aggregate` tags, or `[]`.

---

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