fix: properly set tenant on aggregate queries

This commit is contained in:
Zach Daniel 2024-04-22 20:45:34 -04:00
parent 9e22fb0435
commit ab8bcc86d7

View file

@ -22,6 +22,15 @@ defmodule AshPostgres.Aggregate do
def add_aggregates(query, aggregates, resource, select?, source_binding, root_data) do def add_aggregates(query, aggregates, resource, select?, source_binding, root_data) do
case resource_aggregates_to_aggregates(resource, aggregates) do case resource_aggregates_to_aggregates(resource, aggregates) do
{:ok, aggregates} -> {:ok, aggregates} ->
tenant =
case Enum.at(aggregates, 0) do
%{context: %{tenant: tenant}} ->
tenant
_ ->
nil
end
query = AshPostgres.DataLayer.default_bindings(query, resource) query = AshPostgres.DataLayer.default_bindings(query, resource)
{query, aggregates} = {query, aggregates} =
@ -215,7 +224,7 @@ defmodule AshPostgres.Aggregate do
AshPostgres.Join.set_join_prefix( AshPostgres.Join.set_join_prefix(
subquery, subquery,
query, %{query | prefix: tenant},
first_relationship.destination first_relationship.destination
) )
else else
@ -242,7 +251,7 @@ defmodule AshPostgres.Aggregate do
AshPostgres.Join.set_join_prefix( AshPostgres.Join.set_join_prefix(
subquery, subquery,
query, %{query | prefix: tenant},
first_relationship.destination first_relationship.destination
) )
else else
@ -266,7 +275,7 @@ defmodule AshPostgres.Aggregate do
subquery = subquery =
AshPostgres.Join.set_join_prefix( AshPostgres.Join.set_join_prefix(
subquery, subquery,
query, %{query | prefix: tenant},
first_relationship.destination first_relationship.destination
) )