defmodule Ecto.Entity.Conditions do
import Ecto.Query
defmacro __using__(_) do
quote do
def where(field, value) when is_atom(field) do
from(u in __MODULE__, where: field(u, ^field) == ^value)
end
def where(field, value) when is_binary(field) do
String.downcase(field)
|> String.to_atom()
|> __MODULE__.where(value)
end
def where_all(field, value), do: __MODULE__.where(field, value) |> all()
def where_first(field, value) do
__MODULE__.where(field, value) |> first() |> get_repo().one()
end
def in_ids(ids) when is_list(ids), do: from(p in __MODULE__, where: p.id in ^ids)
def in_ids(id), do: __MODULE__.in_ids([id])
def not_in_ids(ids) when is_list(ids), do: from(p in __MODULE__, where: p.id not in ^ids)
def not_in_ids(id), do: not_in_ids([id])
end
end
end