FatEcto.Query.Dynamics.BtwInContains (FatEcto v1.2.0)
View SourceProvides 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
@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)"
@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)"
@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\"]))"
@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\"}))"
@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])"
@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)"
@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)"
@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\"]))"
@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\"}))"
@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])"