FatEcto.Query.Dynamics.BtwInContains (FatEcto v1.2.0)

View Source

Provides dynamic query builders for common Ecto operations, such as filtering by ranges (between), membership (in), and JSONB containment (contains).

This module is designed to simplify the creation of dynamic queries for Ecto schemas, particularly when dealing with complex filtering conditions.

Example Usage

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.between_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years > ^2 and q.experience_years < ^5)"

Summary

Functions

Builds a dynamic query where a field's value is between two provided values (exclusive).

Builds a dynamic query where a field's value is between or equal to two provided values (inclusive).

Builds a dynamic query where a JSONB field contains any of the provided values.

Builds a dynamic query where a JSONB field contains a specific value.

Builds a dynamic query where a field's value is in a provided list.

Builds a dynamic query where a field's value is not between the provided range (exclusive).

Builds a dynamic query where a field's value is not between or equal to the provided range (inclusive).

Builds a dynamic query where a JSONB field does not contain any of the provided values.

Builds a dynamic query where a JSONB field does not contain a specific value.

Builds a dynamic query where a field's value is not in the provided list.

Functions

between_dynamic(key, values)

@spec between_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is between two provided values (exclusive).

Parameters

  • key - The field name as an atom.
  • values - A list of two values representing the range.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.between_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years > ^2 and q.experience_years < ^5)"

between_equal_dynamic(key, values)

@spec between_equal_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is between or equal to two provided values (inclusive).

Parameters

  • key - The field name as an atom.
  • values - A list of two values representing the range.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.between_equal_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years >= ^2 and q.experience_years <= ^5)"

contains_any_dynamic(key, values)

@spec contains_any_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a JSONB field contains any of the provided values.

Parameters

  • key - The JSONB field name as an atom.
  • values - The values to check for overlap.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.contains_any_dynamic(:tags, ["elixir", "erlang"])
iex> inspect(result)
"dynamic([q], fragment(\"? && ?\", q.tags, ^[\"elixir\", \"erlang\"]))"

contains_dynamic(key, value)

@spec contains_dynamic(atom(), map() | list()) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a JSONB field contains a specific value.

Parameters

  • key - The JSONB field name as an atom.
  • value - The value to check for containment.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.contains_dynamic(:metadata, %{"role" => "admin"})
iex> inspect(result)
"dynamic([q], fragment(\"? @> ?\", q.metadata, ^%{\"role\" => \"admin\"}))"

in_dynamic(key, values)

@spec in_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is in a provided list.

Parameters

  • key - The field name as an atom.
  • values - A list of values to match against.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.in_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years in ^[2, 5])"

not_between_dynamic(key, values)

@spec not_between_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is not between the provided range (exclusive).

Parameters

  • key - The field name as an atom.
  • values - A list of two values representing the range.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.not_between_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years < ^2 or q.experience_years > ^5)"

not_between_equal_dynamic(key, values)

@spec not_between_equal_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is not between or equal to the provided range (inclusive).

Parameters

  • key - The field name as an atom.
  • values - A list of two values representing the range.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.not_between_equal_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years <= ^2 or q.experience_years >= ^5)"

not_contains_any_dynamic(key, values)

@spec not_contains_any_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a JSONB field does not contain any of the provided values.

Parameters

  • key - The JSONB field name as an atom.
  • values - The values to check for absence.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.not_contains_any_dynamic(:tags, ["elixir", "erlang"])
iex> inspect(result)
"dynamic([q], not fragment(\"? && ?\", q.tags, ^[\"elixir\", \"erlang\"]))"

not_contains_dynamic(key, value)

@spec not_contains_dynamic(atom(), map() | list()) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a JSONB field does not contain a specific value.

Parameters

  • key - The JSONB field name as an atom.
  • value - The value to check for absence.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.not_contains_dynamic(:metadata, %{"role" => "admin"})
iex> inspect(result)
"dynamic([q], not fragment(\"? @> ?\", q.metadata, ^%{\"role\" => \"admin\"}))"

not_in_dynamic(key, values)

@spec not_in_dynamic(atom(), [any()]) :: Ecto.Query.dynamic_expr()

Builds a dynamic query where a field's value is not in the provided list.

Parameters

  • key - The field name as an atom.
  • values - A list of values to exclude.

Examples

iex> result = Elixir.FatEcto.Query.Dynamics.BtwInContains.not_in_dynamic(:experience_years, [2, 5])
iex> inspect(result)
"dynamic([q], q.experience_years not in ^[2, 5])"