ecto_dripper v1.0.0 EctoDripper
Provides composable queries following a convention of query_x(query, %{x: "asdf"})
, or query_all(query, %{x: "asdf"})
.
Basic Usage
defmodule MyApp.SomeQuery do
use EctoDripper,
composable_queries: [
[:status, :==, :status],
[:max_height, :>, :height],
[:status_down, :status_down]
],
standalone_queries: [
[:small_with_status_up]
]
defp status_down(query, args)
defp status_down(query, %{status_down: true}) do
from(
i in query,
where: i.status == ^"down"
)
end
defp status_down(query, %{status_down: _}) do
from(
i in query,
where: i.status != ^"down"
)
end
defp small_with_status_up(query, _args) do
from(
i in query,
where: i.status == ^"up", i.height <= 10
)
end
end
MyThing
|> MyApp.SomeQuery.query_all(%{status: "somewhere", max_height: 30})
# #Ecto.Query<from i in MyThing, where: i.status == ^"somewhere", i.height > ^30>
# and use it with your Repo
MyThing
|> MyApp.SomeQuery.query_all(%{status: "up", max_height: 30})
|> Repo.all()
# [%MyThing{}, ..]