fix: raised error message contents

This commit is contained in:
Zach Daniel 2020-06-18 23:53:46 -04:00
parent 846f842d98
commit d95e984193
No known key found for this signature in database
GPG key ID: C377365383138D4B
3 changed files with 30 additions and 10 deletions

View file

@ -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

View file

@ -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

View file

@ -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],