mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
fix: raised error message contents
This commit is contained in:
parent
846f842d98
commit
d95e984193
3 changed files with 30 additions and 10 deletions
|
@ -61,15 +61,27 @@ defmodule Ash.Error do
|
|||
end
|
||||
end
|
||||
|
||||
def error_messages(errors) do
|
||||
errors
|
||||
|> Enum.group_by(& &1.class)
|
||||
|> Enum.sort_by(fn {group, _} -> Map.get(@error_class_indices, group) end)
|
||||
|> Enum.map_join("\n\n", fn {class, class_errors} ->
|
||||
header = header(class) <> "\n\n"
|
||||
def error_messages(errors, custom_message \\ nil) do
|
||||
generic_message =
|
||||
errors
|
||||
|> Enum.group_by(& &1.class)
|
||||
|> Enum.sort_by(fn {group, _} -> Map.get(@error_class_indices, group) end)
|
||||
|> Enum.map_join("\n\n", fn {class, class_errors} ->
|
||||
header = header(class) <> "\n\n"
|
||||
|
||||
header <> Enum.map_join(class_errors, "\n", &"* #{Exception.message(&1)}")
|
||||
end)
|
||||
header <> Enum.map_join(class_errors, "\n", &"* #{Exception.message(&1)}")
|
||||
end)
|
||||
|
||||
if custom_message do
|
||||
custom =
|
||||
custom_message
|
||||
|> List.wrap()
|
||||
|> Enum.map_join("\n", &"* #{&1}")
|
||||
|
||||
"\n\n" <> custom <> generic_message
|
||||
else
|
||||
generic_message
|
||||
end
|
||||
end
|
||||
|
||||
def error_descriptions(errors) do
|
||||
|
|
|
@ -9,8 +9,9 @@ defmodule Ash.Error.Unknown do
|
|||
|
||||
def code(_), do: "unknown"
|
||||
|
||||
def message(%{errors: errors}) when not is_nil(errors) do
|
||||
Ash.Error.error_messages(errors)
|
||||
def message(%{errors: errors, error: error}) when not is_nil(errors) do
|
||||
custom_message = error |> List.wrap() |> Enum.map(&inspect/1)
|
||||
Ash.Error.error_messages(errors, custom_message)
|
||||
end
|
||||
|
||||
def message(error) do
|
||||
|
|
|
@ -311,6 +311,13 @@ defmodule Ash.Query do
|
|||
end
|
||||
|
||||
defp add_error(query, key, message) do
|
||||
message =
|
||||
if is_binary(message) do
|
||||
"#{key}: #{message}"
|
||||
else
|
||||
message
|
||||
end
|
||||
|
||||
%{
|
||||
query
|
||||
| errors: [Map.put(Ash.Error.to_ash_error(message), :path, key) | query.errors],
|
||||
|
|
Loading…
Reference in a new issue