fix: limit 1 on to one side load queries

This commit is contained in:
Zach Daniel 2021-05-07 01:07:01 -04:00
parent 67fe025622
commit f8604717bd
2 changed files with 11 additions and 2 deletions

View file

@ -49,6 +49,13 @@ defmodule Ash.Actions.SideLoad do
end end
|> maybe_select(relationship.destination_field) |> maybe_select(relationship.destination_field)
related_query =
if relationship.cardinality == :one do
Ash.Query.limit(related_query, 1)
else
related_query
end
new_path = [relationship | path] new_path = [relationship | path]
{related_query, further_requests} = {related_query, further_requests} =
@ -134,7 +141,9 @@ defmodule Ash.Actions.SideLoad do
defp attach_to_one_side_loads(value, last_relationship, data, lead_path) do defp attach_to_one_side_loads(value, last_relationship, data, lead_path) do
values = values =
Enum.into(value, %{}, fn item -> value
|> Enum.reverse()
|> Enum.into(%{}, fn item ->
{Map.get(item, last_relationship.destination_field), item} {Map.get(item, last_relationship.destination_field), item}
end) end)

View file

@ -32,7 +32,7 @@ defmodule Ash.Test.Actions.SideLoadTest do
has_one :latest_post, Ash.Test.Actions.SideLoadTest.Post, has_one :latest_post, Ash.Test.Actions.SideLoadTest.Post,
destination_field: :author_id, destination_field: :author_id,
sort: :inserted_at sort: [inserted_at: :desc]
end end
end end