From 5ab0c08f0fdf760c706515aebc1fadb627eb33dc Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Tue, 30 May 2023 22:17:05 -0400 Subject: [PATCH] fix: properly load aggregates required for keyset pagination --- lib/ash/actions/read.ex | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/ash/actions/read.ex b/lib/ash/actions/read.ex index d0442976..7dd39c22 100644 --- a/lib/ash/actions/read.ex +++ b/lib/ash/actions/read.ex @@ -2142,17 +2142,27 @@ defmodule Ash.Actions.Read do query.sort |> Enum.flat_map(fn {%Ash.Query.Calculation{} = calc, _} -> - [calc] + [{:calc, calc}] + + {field, _} -> + if Ash.Resource.Info.aggregate(query.resource, field) do + [{:agg, field}] + else + [] + end _ -> [] end) |> Enum.reduce(query, fn - %{load: nil} = calc, query -> + {:calc, %{load: nil} = calc}, query -> Ash.Query.calculate(query, calc.name, {calc.module, calc.opts}, calc.type, calc.context) - %{load: load, context: context}, query -> + {:calc, %{load: load, context: context}}, query -> Ash.Query.load(query, [{load, context}]) + + {:agg, field}, query -> + Ash.Query.load(query, field) end) limited =