Current section

Files

Jump to
dagger lib dagger core graphql response.ex
Raw

lib/dagger/core/graphql/response.ex

defmodule Dagger.Core.GraphQL.Response.Error do
defexception [:message, :path, :locations, :extensions]
def from_map(map) do
%__MODULE__{
message: map["message"],
path: map["path"],
locations: map["locations"],
extensions: map["extensions"]
}
end
@impl true
def message(exception) do
input = Enum.join(exception.path, ".")
message = exception.message
"input: #{input} #{message}"
end
end
defmodule Dagger.Core.GraphQL.Response do
@moduledoc """
GraphQL Response type.
"""
alias Dagger.Core.GraphQL.Response.Error
defstruct [:data, :extensions, :errors]
@doc """
Serialize response from map to struct.
"""
def from_map(%{} = map) do
errors = map["errors"]
%__MODULE__{
data: map["data"],
errors:
unless is_nil(errors) do
Enum.map(errors, &Error.from_map/1)
end
}
end
end