defmodule Absinthe.Middleware.MapGet do
@moduledoc """
This is the default middleware. It assumes the the object it receives is a map
and uses `Map.get/2` to get the value for this field. If this field is already
marked as resolved, then this middleware does not touch it.
If you want to replace this middleware you should use
`Absinthe.Schema.replace_default/4`
"""
@behaviour Absinthe.Middleware
def call(%{state: :unresolved, source: source} = res, key) do
%{res | state: :resolved, value: Map.get(source, key)}
end
def call(res, _key), do: res
end