mirror of
https://github.com/ash-project/ash_postgres.git
synced 2024-09-19 21:13:19 +12:00
improvement: handle no_attributes?
better in more places
This commit is contained in:
parent
d2e309c126
commit
b4ec957651
2 changed files with 14 additions and 4 deletions
|
@ -906,7 +906,6 @@ defmodule AshPostgres.DataLayer do
|
|||
root_data,
|
||||
[{source_query, source_attribute, destination_attribute, relationship}]
|
||||
) do
|
||||
source_values = Enum.map(root_data, &Map.get(&1, source_attribute))
|
||||
source_query = Ash.Query.new(source_query)
|
||||
|
||||
base_query =
|
||||
|
@ -959,13 +958,22 @@ defmodule AshPostgres.DataLayer do
|
|||
end
|
||||
|> case do
|
||||
{:ok, data_layer_query} ->
|
||||
data_layer_query =
|
||||
if Map.get(relationship, :no_attributes?) do
|
||||
data_layer_query
|
||||
else
|
||||
source_values = Enum.map(root_data, &Map.get(&1, source_attribute))
|
||||
|
||||
from(source in data_layer_query,
|
||||
where: field(source, ^source_attribute) in ^source_values
|
||||
)
|
||||
end
|
||||
|
||||
if query.__ash_bindings__[:__order__?] do
|
||||
{:ok,
|
||||
from(source in data_layer_query,
|
||||
where: field(source, ^source_attribute) in ^source_values,
|
||||
inner_lateral_join: destination in ^subquery,
|
||||
on: true,
|
||||
order_by: destination.__order__,
|
||||
select: destination,
|
||||
select_merge: %{__lateral_join_source__: field(source, ^source_attribute)},
|
||||
distinct: true
|
||||
|
@ -973,7 +981,6 @@ defmodule AshPostgres.DataLayer do
|
|||
else
|
||||
{:ok,
|
||||
from(source in data_layer_query,
|
||||
where: field(source, ^source_attribute) in ^source_values,
|
||||
inner_lateral_join: destination in ^subquery,
|
||||
on: true,
|
||||
select: destination,
|
||||
|
|
|
@ -1180,6 +1180,9 @@ defmodule AshPostgres.Expr do
|
|||
field(through, ^first_relationship.source_attribute_on_join_resource)
|
||||
)
|
||||
|
||||
Map.get(first_relationship, :no_attributes?) ->
|
||||
filtered
|
||||
|
||||
true ->
|
||||
source_ref =
|
||||
ref_binding(
|
||||
|
|
Loading…
Reference in a new issue