mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 21:43:02 +12:00
fix: include error context in top level of errors
This commit is contained in:
parent
6a13903673
commit
30309dac1d
5 changed files with 50 additions and 15 deletions
|
@ -575,10 +575,17 @@ defmodule Ash.Error do
|
||||||
defp header(:framework), do: "Framework Error"
|
defp header(:framework), do: "Framework Error"
|
||||||
defp header(:unknown), do: "Unknown Error"
|
defp header(:unknown), do: "Unknown Error"
|
||||||
|
|
||||||
defp breadcrumb(nil), do: ""
|
@doc false
|
||||||
defp breadcrumb([]), do: ""
|
def breadcrumb(nil), do: ""
|
||||||
|
def breadcrumb([]), do: ""
|
||||||
|
|
||||||
defp breadcrumb(error_context) do
|
def breadcrumb(error_context) do
|
||||||
"Context: " <> Enum.join(error_context, " > ") <> "\n"
|
case Enum.filter(error_context, & &1) do
|
||||||
|
[] ->
|
||||||
|
""
|
||||||
|
|
||||||
|
bread_crumbs ->
|
||||||
|
"Context: " <> Enum.join(bread_crumbs, " > ") <> "\n"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,12 +8,16 @@ defmodule Ash.Error.Forbidden do
|
||||||
defimpl Ash.ErrorKind do
|
defimpl Ash.ErrorKind do
|
||||||
def id(_), do: Ash.UUID.generate()
|
def id(_), do: Ash.UUID.generate()
|
||||||
|
|
||||||
def message(%{errors: errors, stacktraces?: stacktraces?}) when not is_nil(errors) do
|
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
|
||||||
Ash.Error.error_messages(errors, nil, stacktraces?)
|
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
|
||||||
end
|
|
||||||
|
|
||||||
def message(%{errors: errors}) do
|
case Ash.Error.breadcrumb(error_context) do
|
||||||
Ash.Error.error_descriptions(errors)
|
"" ->
|
||||||
|
messages
|
||||||
|
|
||||||
|
error_context ->
|
||||||
|
error_context <> "\n" <> messages
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def code(_), do: "Forbidden"
|
def code(_), do: "Forbidden"
|
||||||
|
|
|
@ -9,8 +9,16 @@ defmodule Ash.Error.Framework do
|
||||||
|
|
||||||
def code(_), do: "framework"
|
def code(_), do: "framework"
|
||||||
|
|
||||||
def message(%{errors: errors, stacktraces?: stacktraces?}) do
|
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
|
||||||
Ash.Error.error_messages(errors, nil, stacktraces?)
|
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
|
||||||
|
|
||||||
|
case Ash.Error.breadcrumb(error_context) do
|
||||||
|
"" ->
|
||||||
|
messages
|
||||||
|
|
||||||
|
error_context ->
|
||||||
|
error_context <> "\n" <> messages
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,8 +9,16 @@ defmodule Ash.Error.Invalid do
|
||||||
|
|
||||||
def code(_), do: "invalid"
|
def code(_), do: "invalid"
|
||||||
|
|
||||||
def message(%{errors: errors, stacktraces?: stacktraces?}) do
|
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
|
||||||
Ash.Error.error_messages(errors, nil, stacktraces?)
|
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
|
||||||
|
|
||||||
|
case Ash.Error.breadcrumb(error_context) do
|
||||||
|
"" ->
|
||||||
|
messages
|
||||||
|
|
||||||
|
error_context ->
|
||||||
|
error_context <> "\n" <> messages
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,8 +17,16 @@ defmodule Ash.Error.Unknown do
|
||||||
|
|
||||||
def code(_), do: "unknown"
|
def code(_), do: "unknown"
|
||||||
|
|
||||||
def message(%{errors: errors, stacktraces?: stacktraces?}) do
|
def message(%{errors: errors, stacktraces?: stacktraces?, error_context: error_context}) do
|
||||||
Ash.Error.error_messages(errors, nil, stacktraces?)
|
messages = Ash.Error.error_messages(errors, nil, stacktraces?)
|
||||||
|
|
||||||
|
case Ash.Error.breadcrumb(error_context) do
|
||||||
|
"" ->
|
||||||
|
messages
|
||||||
|
|
||||||
|
error_context ->
|
||||||
|
error_context <> "\n" <> messages
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue