defmodule Skuld.Query do
@moduledoc """
Syntax module providing the query do-notation macro.
Part of the `skuld_query` package, which provides Haxl-style auto-batching
data fetches via dependency analysis and concurrent FiberPool dispatch.
See the [architecture guide](https://hexdocs.pm/skuld/architecture.html)
for how this fits into the Skuld ecosystem.
`use Skuld.Query` imports `query`, `defquery`, and `defqueryp` macros
for writing batchable data-fetching computations.
## Usage
use Skuld.Query
query do
user <- Users.get_user(id)
orders <- Orders.get_by_user(user.id)
{user, orders}
end
defquery user_with_orders(id) do
user <- Users.get_user(id)
orders <- Orders.get_by_user(user.id)
{user, orders}
end
## See Also
- `Skuld.QueryContract` — define batchable fetch contracts with `deffetch`
- `Skuld.Syntax` — computation block macros (`comp`, `defcomp`)
"""
defmacro __using__(_opts) do
quote do
import Skuld.Query.QueryBlock
end
end
end