Skip to content

Commit 85400f4

Browse files
committed
improvement: use more idiomatic error messages on schema failures
1 parent 716b0cd commit 85400f4

File tree

6 files changed

+125
-203
lines changed

6 files changed

+125
-203
lines changed

lib/ash_json_api/error/invalid_body.ex

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ defmodule AshJsonApi.Error.InvalidBody do
1313
def to_json_api_error(error) do
1414
error.json_xema_error
1515
|> AshJsonApi.Error.SchemaErrors.all_errors(:json_pointer)
16-
|> Enum.map(fn %{path: path, message: message} ->
16+
|> Enum.map(fn error_map ->
17+
# Use specific code and title if provided (e.g., for required errors)
18+
code = Map.get(error_map, :code, "invalid_body")
19+
title = Map.get(error_map, :title, "InvalidBody")
20+
1721
%AshJsonApi.Error{
1822
id: Ash.UUID.generate(),
1923
status_code: 400,
20-
source_pointer: path,
21-
code: "invalid_body",
22-
title: "InvalidBody",
23-
detail: message,
24+
source_pointer: error_map.path,
25+
code: code,
26+
title: title,
27+
detail: error_map.message,
2428
meta: %{}
2529
}
2630
end)

lib/ash_json_api/error/invalid_header.ex

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ defmodule AshJsonApi.Error.InvalidHeader do
1313
def to_json_api_error(error) do
1414
error.json_xema_error
1515
|> AshJsonApi.Error.SchemaErrors.all_errors(:json_pointer)
16-
|> Enum.map(fn %{path: path, message: message} ->
16+
|> Enum.map(fn error_map ->
17+
# Use specific code and title if provided (e.g., for required errors)
18+
code = Map.get(error_map, :code, "invalid_header")
19+
title = Map.get(error_map, :title, "InvalidHeader")
20+
1721
%AshJsonApi.Error{
1822
id: Ash.UUID.generate(),
1923
status_code: 400,
20-
source_pointer: path,
21-
code: "invalid_header",
22-
title: "InvalidHeader",
23-
detail: message,
24+
source_pointer: error_map.path,
25+
code: code,
26+
title: title,
27+
detail: error_map.message,
2428
meta: %{}
2529
}
2630
end)

lib/ash_json_api/error/invalid_query.ex

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ defmodule AshJsonApi.Error.InvalidQuery do
1212
def to_json_api_error(error) do
1313
error.json_xema_error
1414
|> AshJsonApi.Error.SchemaErrors.all_errors(:json_pointer)
15-
|> Enum.map(fn %{path: path, message: message} ->
15+
|> Enum.map(fn error_map ->
16+
# Use specific code and title if provided (e.g., for required errors)
17+
code = Map.get(error_map, :code, "invalid_query")
18+
title = Map.get(error_map, :title, "InvalidQuery")
19+
1620
%AshJsonApi.Error{
1721
id: Ash.UUID.generate(),
1822
status_code: 400,
19-
source_pointer: path,
20-
code: "invalid_query",
21-
title: "InvalidQuery",
22-
detail: message,
23+
source_pointer: error_map.path,
24+
code: code,
25+
title: title,
26+
detail: error_map.message,
2327
meta: %{}
2428
}
2529
end)

0 commit comments

Comments
 (0)