Basics
This check is disabled by default.
Learn how to enable it via .credo.exs.
This check has a base priority of high and works with any version of Elixir.
Explanation
Prefer composing Ecto queries with pipes instead of using keyword clauses
directly inside from/2.
Examples
Avoid:
from(u in User, where: u.active, order_by: [asc: u.inserted_at])Prefer:
User
|> where([u], u.active)
|> order_by([u], asc: u.inserted_at)Plain from/1 usage is still allowed, and from/2 with only as: is
allowed for named bindings. This check only flags query clauses like
where, order_by, joins, select, and similar clauses attached
directly to from.
Notes
This check uses static AST analysis, so it favors clear source-level patterns over runtime behavior.
Options
This check has no check-specific options. Configure it with an empty option list.
Usage
Add this check to Credo's checks: list in .credo.exs:
%{
configs: [
%{
name: "default",
checks: [
{Bylaw.Credo.Check.Ecto.PipeBasedQueries, []}
]
}
]
}Check-Specific Parameters
There are no specific parameters for this check.
General Parameters
Like with all checks, general params can be applied.
Parameters can be configured via the .credo.exs config file.