# bylaw_ecto_query v0.1.0-alpha.1 - Table of Contents

Ecto query validation APIs and checks for Bylaw.

## Pages

- [Bylaw.Ecto.Query](readme.md)

## Modules

- Bylaw.Ecto.Query
  - [Bylaw.Ecto.Query](Bylaw.Ecto.Query.md): Runs Ecto query checks from an explicit list of check specs.
  - [Bylaw.Ecto.Query.Check](Bylaw.Ecto.Query.Check.md): Behaviour for checks that validate an `Ecto.Query` before it runs.
  - [Bylaw.Ecto.Query.Checks](Bylaw.Ecto.Query.Checks.md): Namespace for built-in `Bylaw.Ecto.Query.Check` implementations.
  - [Bylaw.Ecto.Query.Issue](Bylaw.Ecto.Query.Issue.md): Describes a query validation issue found by a check.

- Bylaw.Ecto.Query checks
  - [Bylaw.Ecto.Query.Checks.CartesianJoins](Bylaw.Ecto.Query.Checks.CartesianJoins.md): Validates that queries do not use explicit cartesian joins.
  - [Bylaw.Ecto.Query.Checks.ConflictingWherePredicates](Bylaw.Ecto.Query.Checks.ConflictingWherePredicates.md): Validates that root `where` predicates can all be satisfied.
  - [Bylaw.Ecto.Query.Checks.DateDatetimeMixedComparisons](Bylaw.Ecto.Query.Checks.DateDatetimeMixedComparisons.md): Validates that date fields are not compared to datetime fields without explicit truncation.
  - [Bylaw.Ecto.Query.Checks.DeterministicOrder](Bylaw.Ecto.Query.Checks.DeterministicOrder.md): Validates that ordered queries include the root schema primary key.
  - [Bylaw.Ecto.Query.Checks.DuplicateJoins](Bylaw.Ecto.Query.Checks.DuplicateJoins.md): Validates that a query does not repeat equivalent joins.
  - [Bylaw.Ecto.Query.Checks.EmptyInPredicates](Bylaw.Ecto.Query.Checks.EmptyInPredicates.md): Validates that root `where` predicates do not rely on empty `in` lists.
  - [Bylaw.Ecto.Query.Checks.ExplicitVisibilityPredicates](Bylaw.Ecto.Query.Checks.ExplicitVisibilityPredicates.md): Validates that configured visibility-sensitive fields are explicitly constrained.
  - [Bylaw.Ecto.Query.Checks.HalfOpenTemporalIntervals](Bylaw.Ecto.Query.Checks.HalfOpenTemporalIntervals.md): Validates that root temporal interval predicates are half-open.
  - [Bylaw.Ecto.Query.Checks.HardDeleteOnSoftDeleteSchema](Bylaw.Ecto.Query.Checks.HardDeleteOnSoftDeleteSchema.md): Validates that soft-delete schemas are not hard-deleted with `delete_all`.
  - [Bylaw.Ecto.Query.Checks.LeftJoinWherePredicates](Bylaw.Ecto.Query.Checks.LeftJoinWherePredicates.md): Validates that `left_join` bindings are not null-rejected by root `where` predicates.
  - [Bylaw.Ecto.Query.Checks.MandatoryJoinKeys](Bylaw.Ecto.Query.Checks.MandatoryJoinKeys.md): Validates that explicit schema joins preserve configured mandatory keys.
  - [Bylaw.Ecto.Query.Checks.MandatoryWhereKeys](Bylaw.Ecto.Query.Checks.MandatoryWhereKeys.md): Validates that a query has a root `where` predicate referencing configured keys.
  - [Bylaw.Ecto.Query.Checks.ManualJoinInsteadOfAssoc](Bylaw.Ecto.Query.Checks.ManualJoinInsteadOfAssoc.md): Validates that manual joins use `assoc/2` when a root association exists.
  - [Bylaw.Ecto.Query.Checks.NamedBindings](Bylaw.Ecto.Query.Checks.NamedBindings.md): Validates that an `Ecto.Query` uses named binding aliases in query expressions.
  - [Bylaw.Ecto.Query.Checks.OffsetWithoutLimit](Bylaw.Ecto.Query.Checks.OffsetWithoutLimit.md): Validates that queries do not use `offset` without `limit`.
  - [Bylaw.Ecto.Query.Checks.RequiredOrder](Bylaw.Ecto.Query.Checks.RequiredOrder.md): Validates that query shapes requiring stable row order include `order_by`.
  - [Bylaw.Ecto.Query.Checks.UnboundedDeletes](Bylaw.Ecto.Query.Checks.UnboundedDeletes.md): Validates that `delete_all` queries are bounded.
  - [Bylaw.Ecto.Query.Checks.UnboundedUpdates](Bylaw.Ecto.Query.Checks.UnboundedUpdates.md): Validates that `update_all` queries are bounded.
  - [Bylaw.Ecto.Query.Checks.UtcDatetimeNaiveComparisons](Bylaw.Ecto.Query.Checks.UtcDatetimeNaiveComparisons.md): Validates that root UTC datetime fields are not compared to `NaiveDateTime` values.

