defmodule GlificWeb.Schema.Middleware.QueryErrors do @moduledoc """ Implementing middleware functions to transform errors from Elixir and friends into a format consumable and displayable to the API user. This version is specifically for queries. """ @behaviour Absinthe.Middleware @doc """ This is the main middleware callback. It receives an %Absinthe.Resolution{} struct and it needs to return an %Absinthe.Resolution{} struct. The second argument will be whatever value was passed to the middleware call that setup the middleware. """ @spec call(Absinthe.Resolution.t(), term()) :: Absinthe.Resolution.t() def call(res, _) do l = Map.get(res, :errors) if length(l) == 2 do [h | t] = l %{res | value: %{errors: [%{key: h, message: t}]}, errors: []} else res end end end