this solution worked well for me based on brian’s answer
def handle_errors(fun) do
fn source, args, info ->
case Absinthe.Resolution.call(fun, source, args, info) do
{:error, %Ecto.Changeset{} = changeset} -> format_changeset(changeset)
val -> val
end
end
end
def format_changeset(changeset) do
#{:error, [email: {"has already been taken", []}]}
errors = changeset.errors
|> Enum.map(fn({key, {value, context}}) ->
[message: "#{key} #{value}", details: context]
end)
{:error, errors}
end