Current section

Files

Jump to
ash_json_api lib ash_json_api error invalid_field.ex
Raw

lib/ash_json_api/error/invalid_field.ex

defmodule AshJsonApi.Error.InvalidField do
@moduledoc """
Returned when a field is requested that does not exist or is invalid
"""
use Splode.Error,
class: :invalid,
fields: [:type, :field, :parameter?, :detail, :source_parameter]
def message(error) do
error.detail
end
def exception(opts) do
opts
|> Keyword.put_new(:detail, "Invalid field for type #{opts[:type]}: #{opts[:field]}")
|> parameter()
|> Keyword.drop([:type, :field, :parameter?])
|> super()
end
defp parameter(opts) do
if opts[:parameter?] do
Keyword.put_new(opts, :source_parameter, "fields[#{opts[:type]}]")
else
Keyword.put_new(opts, :source_parameter, "fields")
end
end
defimpl AshJsonApi.ToJsonApiError do
def to_json_api_error(error) do
%AshJsonApi.Error{
id: Ash.UUID.generate(),
status_code: 400,
code: "invalid_field",
title: "InvalidField",
detail: error.detail,
source_parameter: error.source_parameter,
meta: %{}
}
end
end
end