fix: undo incorrect behaviour in runtime evaluation

This commit is contained in:
Zach Daniel 2024-01-11 15:35:49 -05:00
parent 6b74072ada
commit 2e2d2c404c

View file

@ -1102,17 +1102,40 @@ defmodule Ash.Filter.Runtime do
end
end
def get_related(record, path, unknown_on_unknown_refs?, join_filters, parent_stack, api) do
case get_related([record], path, unknown_on_unknown_refs?, join_filters, parent_stack, api) do
:unknown ->
if unknown_on_unknown_refs? do
:unknown
else
[]
end
def get_related(
record,
[key | _] = path,
unknown_on_unknown_refs?,
join_filters,
parent_stack,
api
) do
case Map.get(record, key) do
%Ash.NotLoaded{} when unknown_on_unknown_refs? ->
:unknown
related ->
List.wrap(related)
nil when unknown_on_unknown_refs? ->
:unknown
_value ->
case get_related(
[record],
path,
unknown_on_unknown_refs?,
join_filters,
parent_stack,
api
) do
:unknown ->
if unknown_on_unknown_refs? do
:unknown
else
[]
end
related ->
List.wrap(related)
end
end
end