Current section
Files
Jump to
Current section
Files
lib/ecto/query.ex
defmodule AntlUtils.Ecto.Query do
import Ecto.Query
def where(queryable, key, nil) when is_atom(key) do
from(q in queryable, where: is_nil(field(q, ^key)))
end
def where(queryable, key, value) when is_atom(key) and is_integer(value) do
from(q in queryable, where: field(q, ^key) == ^value)
end
def where(queryable, key, value) when is_atom(key) and is_binary(value) do
from(q in queryable, where: field(q, ^key) == ^value)
end
def where(queryable, key, value) when is_atom(key) and length(value) > 0 do
from(q in queryable, where: field(q, ^key) in ^value)
end
def where_like(queryable, key, value) when is_atom(key) and is_binary(value) do
like_value = "%#{String.replace(value, "%", "\\%")}%"
from(q in queryable, where: like(field(q, ^key), ^like_value))
end
def or_where(queryable, key, nil) when is_atom(key) do
from(q in queryable, or_where: is_nil(field(q, ^key)))
end
def or_where(queryable, key, value) when is_atom(key) and is_binary(value) do
from(q in queryable, or_where: field(q, ^key) == ^value)
end
def or_where(queryable, key, value) when is_atom(key) and length(value) > 0 do
from(q in queryable, or_where: field(q, ^key) in ^value)
end
def or_where_like(queryable, key, value) when is_atom(key) and is_binary(value) do
like_value = "%#{String.replace(value, "%", "\\%")}%"
from(q in queryable, or_where: like(field(q, ^key), ^like_value))
end
def order_by(queryable, key, order) when is_atom(key) and order in [:asc, :desc] do
from(q in queryable, order_by: [{^order, field(q, ^key)}])
end
end