chore: fix recent calculation optimization to never prune authorization calcs

This commit is contained in:
Zach Daniel 2024-08-09 17:28:44 -04:00
parent 7991d84b0b
commit 5b40040c76
2 changed files with 16 additions and 10 deletions

View file

@ -2041,8 +2041,10 @@ defmodule Ash.Actions.Read.Calculations do
Enum.filter(calculations_in_query, &used?(ash_query, &1.name))} Enum.filter(calculations_in_query, &used?(ash_query, &1.name))}
end end
defp used?(_ash_query, {:__ash_fields_are_visible__, _}), do: true
defp used?(ash_query, name) do defp used?(ash_query, name) do
Map.has_key?(ash_query, name) || Map.has_key?(ash_query.calculations, name) ||
Enum.any?(ash_query.context[:calculation_dependencies] || [], fn {_source, dest} -> Enum.any?(ash_query.context[:calculation_dependencies] || [], fn {_source, dest} ->
name in dest name in dest
end) end)

View file

@ -676,16 +676,20 @@ defmodule Ash.Actions.Read do
record record
record -> record ->
Map.update!(record, :calculations, fn calculations -> if Map.has_key?(record.calculations, name) do
Map.update!(calculations, name, fn value -> Map.update!(record, :calculations, fn calculations ->
Ash.Type.rewrite( Map.update!(calculations, name, fn value ->
type, Ash.Type.rewrite(
value, type,
[{:cleanup_field_auth, further_load}], value,
constraints [{:cleanup_field_auth, further_load}],
) constraints
)
end)
end) end)
end) else
record
end
end end
nil -> nil ->