fix: show context on all errors

This commit is contained in:
Zach Daniel 2023-04-03 23:44:16 -04:00
parent 30309dac1d
commit 6ba7c76aea
6 changed files with 21 additions and 40 deletions

View file

@ -546,7 +546,7 @@ defmodule Ash.Error do
|> Enum.map_join("\n\n", fn {class, class_errors} ->
header = header(class) <> "\n\n"
header <> Enum.map_join(class_errors, "\n", &"* #{Ash.ErrorKind.message(&1)}")
header <> Enum.map_join(class_errors, "\n", &"* #{Exception.message(&1)}")
end)
end

View file

@ -25,6 +25,15 @@ defmodule Ash.Error.Exception do
def message(%{vars: vars} = exception) do
string = Ash.ErrorKind.message(exception)
string =
case Ash.Error.breadcrumb(Map.get(exception, :error_context)) do
"" ->
string
context ->
context <> "\n" <> string
end
Enum.reduce(List.wrap(vars), string, fn {key, value}, acc ->
if String.contains?(acc, "%{#{key}}") do
String.replace(acc, "%{#{key}}", to_string(value))

View file

@ -8,16 +8,12 @@ defmodule Ash.Error.Forbidden do
defimpl Ash.ErrorKind do
def id(_), do: Ash.UUID.generate()
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
def message(%{errors: errors, stacktraces?: stacktraces?}) when not is_nil(errors) do
Ash.Error.error_messages(errors, nil, stacktraces?)
end
case Ash.Error.breadcrumb(error_context) do
"" ->
messages
error_context ->
error_context <> "\n" <> messages
end
def message(%{errors: errors}) do
Ash.Error.error_descriptions(errors)
end
def code(_), do: "Forbidden"

View file

@ -9,16 +9,8 @@ defmodule Ash.Error.Framework do
def code(_), do: "framework"
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
case Ash.Error.breadcrumb(error_context) do
"" ->
messages
error_context ->
error_context <> "\n" <> messages
end
def message(%{errors: errors, stacktraces?: stacktraces?}) do
Ash.Error.error_messages(errors, nil, stacktraces?)
end
end
end

View file

@ -9,16 +9,8 @@ defmodule Ash.Error.Invalid do
def code(_), do: "invalid"
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
case Ash.Error.breadcrumb(error_context) do
"" ->
messages
error_context ->
error_context <> "\n" <> messages
end
def message(%{errors: errors, stacktraces?: stacktraces?}) do
Ash.Error.error_messages(errors, nil, stacktraces?)
end
end
end

View file

@ -17,16 +17,8 @@ defmodule Ash.Error.Unknown do
def code(_), do: "unknown"
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
case Ash.Error.breadcrumb(error_context) do
"" ->
messages
error_context ->
error_context <> "\n" <> messages
end
def message(%{errors: errors, stacktraces?: stacktraces?}) do
Ash.Error.error_messages(errors, nil, stacktraces?)
end
end
end