Packages

Make simple things easy in Ecto, e.g. Ectoo.max(MyModel, :age). Also .count, .min, .max, .avg.

Current section

Files

Jump to
ectoo lib ectoo.ex
Raw

lib/ectoo.ex

defmodule Ectoo do
require Ecto.Query
def count(query) do
# COUNT("*") would also count NULL values:
# http://stackoverflow.com/q/10863936/6962
# TODO: Handle composite primary keys.
pk = Ectoo.Utils.primary_key(query)
Ecto.Query.from(
m in query, select: count(field(m, ^pk))
)
end
def count(repo, query), do: count(query) |> repo.one
def max(model, column) do
Ecto.Query.from(
m in model, select: max(field(m, ^column))
)
end
def max(repo, model, column), do: __MODULE__.max(model, column) |> repo.one
def min(model, column) do
Ecto.Query.from(
m in model, select: min(field(m, ^column))
)
end
def min(repo, model, column), do: __MODULE__.min(model, column) |> repo.one
def avg(model, column) do
Ecto.Query.from(
m in model, select: avg(field(m, ^column))
)
end
def avg(repo, model, column), do: avg(model, column) |> repo.one
def sum(model, column) do
Ecto.Query.from(
m in model, select: sum(field(m, ^column))
)
end
def sum(repo, model, column), do: sum(model, column) |> repo.one
end