improvement: make loading?/2 smarter

This commit is contained in:
Zach Daniel 2023-05-26 23:58:35 -04:00
parent db1d527aa2
commit 1ab8d3636e
3 changed files with 11 additions and 1 deletions

View file

@ -13,6 +13,7 @@ defmodule Ash.Query.Aggregate do
:implementation,
:load,
:read_action,
:agg_name,
authorize?: true,
uniq?: false,
filterable?: true
@ -195,6 +196,7 @@ defmodule Ash.Query.Aggregate do
{:ok,
%__MODULE__{
name: name,
agg_name: name,
resource: resource,
constraints: constraints,
default_value: default || default_value(kind),

View file

@ -8,6 +8,7 @@ defmodule Ash.Query.Calculation do
:load,
:type,
:constraints,
:calc_name,
context: %{},
required_loads: [],
select: [],
@ -40,6 +41,7 @@ defmodule Ash.Query.Calculation do
module: module,
type: type,
opts: opts,
calc_name: name,
constraints: constraints,
context: context,
required_loads: required_loads,

View file

@ -851,7 +851,13 @@ defmodule Ash.Query do
def loading?(query, item) when is_atom(item) do
Keyword.has_key?(query.load || [], item) || Map.has_key?(query.calculations, item) ||
Map.has_key?(query.aggregates, item)
Map.has_key?(query.aggregates, item) ||
Enum.any?(query.calculations, fn {_, %{calc_name: calc_name}} ->
calc_name == item
end) ||
Enum.any?(query.aggregates, fn {_, %{agg_name: agg_name}} ->
agg_name == item
end)
end
@doc """