diff --git a/lib/ash/error/error.ex b/lib/ash/error/error.ex index c8ccd890..d7d53784 100644 --- a/lib/ash/error/error.ex +++ b/lib/ash/error/error.ex @@ -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 diff --git a/lib/ash/error/exception.ex b/lib/ash/error/exception.ex index bb1dd80a..994b56c2 100644 --- a/lib/ash/error/exception.ex +++ b/lib/ash/error/exception.ex @@ -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)) diff --git a/lib/ash/error/forbidden.ex b/lib/ash/error/forbidden.ex index 4184622b..73b2a106 100644 --- a/lib/ash/error/forbidden.ex +++ b/lib/ash/error/forbidden.ex @@ -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" diff --git a/lib/ash/error/framework.ex b/lib/ash/error/framework.ex index e6235fcc..ed7167d1 100644 --- a/lib/ash/error/framework.ex +++ b/lib/ash/error/framework.ex @@ -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 diff --git a/lib/ash/error/invalid.ex b/lib/ash/error/invalid.ex index a9c1c7ce..af4496b0 100644 --- a/lib/ash/error/invalid.ex +++ b/lib/ash/error/invalid.ex @@ -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 diff --git a/lib/ash/error/unknown.ex b/lib/ash/error/unknown.ex index 84382115..6478e2a2 100644 --- a/lib/ash/error/unknown.ex +++ b/lib/ash/error/unknown.ex @@ -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