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

View Source

Provides 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

array_ilike_dynamic(key, value)

@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%\"))"

ilike_dynamic(key, value)

@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%\"))"

like_dynamic(key, value)

@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%\"))"

not_ilike_dynamic(key, value)

@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%\"))"

not_like_dynamic(key, value)

@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%\"))"