Skip to content

Commit 3edbaee

Browse files
committed
chore: raise errors when a value fails to cast or dump
1 parent 0a43e79 commit 3edbaee

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
defmodule Ash.Error.Unknown.InvalidCastedValue do
2+
@moduledoc "Used when a value fails to dump to its native (storage) format"
3+
4+
use Splode.Error, fields: [:type, :value, :constraints, :error], class: :unknown
5+
6+
def message(%{type: type, value: value, error: error}) do
7+
"Failed to dump #{inspect(type)} value #{inspect(value)}: #{inspect(error)}"
8+
end
9+
end
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
defmodule Ash.Error.Unknown.InvalidStoredValue do
2+
@moduledoc "Used when a stored value fails to be cast from the data layer"
3+
4+
use Splode.Error, fields: [:type, :value, :constraints, :error], class: :unknown
5+
6+
def message(%{type: type, value: value, error: error}) do
7+
"Failed to load #{inspect(type)} value #{inspect(value)}: #{inspect(error)}"
8+
end
9+
end

lib/ash/type/type.ex

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,7 +1735,14 @@ defmodule Ash.Type do
17351735
{:ok, value} ->
17361736
{:ok, value}
17371737

1738-
_ ->
1738+
{:error, error} ->
1739+
raise Ash.Error.Unknown.InvalidStoredValue,
1740+
type: parent,
1741+
value: term,
1742+
constraints: params,
1743+
error: error
1744+
1745+
:error ->
17391746
:error
17401747
end
17411748
end
@@ -1748,7 +1755,14 @@ defmodule Ash.Type do
17481755
{:ok, value} ->
17491756
{:ok, value}
17501757

1751-
_ ->
1758+
{:error, error} ->
1759+
raise Ash.Error.Unknown.InvalidCastedValue,
1760+
type: parent,
1761+
value: term,
1762+
constraints: params,
1763+
error: error
1764+
1765+
:error ->
17521766
:error
17531767
end
17541768
end

0 commit comments

Comments
 (0)