FatEcto.Query.Dynamics.Like (FatEcto v1.2.0)
View SourceProvides dynamic query builders for filtering Ecto queries using LIKE
and ILIKE
operators.
This module is designed to simplify the creation of dynamic queries for Ecto schemas, particularly when dealing with pattern matching on text fields or arrays.
Example Usage
iex> result = Elixir.FatEcto.Query.Dynamics.Like.ilike_dynamic(:name, "%john%")
iex> inspect(result)
"dynamic([q], ilike(fragment(\"(?)::TEXT\", q.name), ^\"%john%\"))"
Summary
Functions
Builds a dynamic query where any element in an array field matches a substring (case-insensitive).
Builds a dynamic query where a field matches a substring (case-insensitive).
Builds a dynamic query where a field matches a substring (case-sensitive).
Builds a dynamic query where a field does not match a substring (case-insensitive).
Builds a dynamic query where a field does not match a substring (case-sensitive).
Functions
@spec array_ilike_dynamic(atom(), String.t()) :: Ecto.Query.dynamic_expr()
Builds a dynamic query where any element in an array field matches a substring (case-insensitive).
Parameters
key
- The field name as an atom.value
- The substring to match (e.g.,"%elixir%"
).
Examples
iex> result = Elixir.FatEcto.Query.Dynamics.Like.array_ilike_dynamic(:tags, "%elixir%")
iex> inspect(result)
"dynamic([q], fragment(\"EXISTS (SELECT 1 FROM UNNEST(?) as value WHERE value ILIKE ?)\", q.tags, ^\"%elixir%\"))"
@spec ilike_dynamic(atom(), String.t()) :: Ecto.Query.dynamic_expr()
Builds a dynamic query where a field matches a substring (case-insensitive).
Parameters
key
- The field name as an atom.value
- The substring to match (e.g.,"%john%"
).
Examples
iex> result = Elixir.FatEcto.Query.Dynamics.Like.ilike_dynamic(:name, "%john%")
iex> inspect(result)
"dynamic([q], ilike(fragment(\"(?)::TEXT\", q.name), ^\"%john%\"))"
@spec like_dynamic(atom(), String.t()) :: Ecto.Query.dynamic_expr()
Builds a dynamic query where a field matches a substring (case-sensitive).
Parameters
key
- The field name as an atom.value
- The substring to match (e.g.,"%John%"
).
Examples
iex> result = Elixir.FatEcto.Query.Dynamics.Like.like_dynamic(:name, "%John%")
iex> inspect(result)
"dynamic([q], like(fragment(\"(?)::TEXT\", q.name), ^\"%John%\"))"
@spec not_ilike_dynamic(atom(), String.t()) :: Ecto.Query.dynamic_expr()
Builds a dynamic query where a field does not match a substring (case-insensitive).
Parameters
key
- The field name as an atom.value
- The substring to exclude (e.g.,"%john%"
).
Examples
iex> result = Elixir.FatEcto.Query.Dynamics.Like.not_ilike_dynamic(:name, "%john%")
iex> inspect(result)
"dynamic([q], not ilike(fragment(\"(?)::TEXT\", q.name), ^\"%john%\"))"
@spec not_like_dynamic(atom(), String.t()) :: Ecto.Query.dynamic_expr()
Builds a dynamic query where a field does not match a substring (case-sensitive).
Parameters
key
- The field name as an atom.value
- The substring to exclude (e.g.,"%John%"
).
Examples
iex> result = Elixir.FatEcto.Query.Dynamics.Like.not_like_dynamic(:name, "%John%")
iex> inspect(result)
"dynamic([q], not like(fragment(\"(?)::TEXT\", q.name), ^\"%John%\"))"