absinthe v1.4.0-rc.0 Absinthe.Resolution.Helpers View Source
Handy functions for returning async or batched resolution functions
It is automatically imported into all modules using Absinthe.Schema.Notation
or (by extension) Absinthe.Schema
.
Link to this section Summary
Functions
Execute resolution field asynchronously
Batch the resolution of several functions together
Link to this section Functions
Link to this function
async(fun, opts \\ [])
View Source
async((() -> term), Keyword.t) :: {:plugin, Absinthe.Middleware.Async, term}
Execute resolution field asynchronously.
This is a helper function for using the Absinthe.Middleware.Async
.
Forbidden in mutation fields. (TODO: actually enforce this)
Link to this function
batch(batch_fun, batch_data, post_batch_fun, opts \\ [])
View Source
batch(Absinthe.Middleware.Batch.batch_fun, term, Absinthe.Middleware.Batch.post_batch_fun, opts :: Keyword.t) :: {:plugin, Absinthe.Middleware.Batch, term}
Batch the resolution of several functions together.
Helper function for creating Absinthe.Middleware.Batch
Example
Raw usage:
object :post do
field :name, :string
field :author, :user do
resolve fn post, _, _ ->
batch({__MODULE__, :users_by_id}, post.author_id, fn batch_results ->
{:ok, Map.get(batch_results, post.author_id)}
end)
end
end
end
def users_by_id(_, user_ids) do
users = Repo.all from u in User, where: u.id in ^user_ids
Map.new(users, fn user -> {user.id, user} end)
end