From ccf30bafacff5e0d319e49b4d93e6e6dc7eb6cc4 Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Fri, 15 May 2020 01:03:43 -0400 Subject: [PATCH] WIP --- lib/ash/actions/side_load.ex | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/lib/ash/actions/side_load.ex b/lib/ash/actions/side_load.ex index ae8803b3..9f3d73c2 100644 --- a/lib/ash/actions/side_load.ex +++ b/lib/ash/actions/side_load.ex @@ -237,11 +237,13 @@ defmodule Ash.Actions.SideLoad do [[:include, Enum.map(path, &Map.get(&1, :name)), :data]] end + request_path = [:include, Enum.reverse(Enum.map([relationship | path], &Map.get(&1, :name)))] + dependencies = if use_data_for_filter? do [[:data, :data] | dependencies] else - dependencies + [request_path ++ [:query] | dependencies] end dependencies = @@ -257,8 +259,6 @@ defmodule Ash.Actions.SideLoad do |> Enum.reverse() |> Enum.map_join(".", &Map.get(&1, :name)) - request_path = [:include, Enum.reverse(Enum.map([relationship | path], &Map.get(&1, :name)))] - Ash.Engine.Request.new( action_type: :read, resource: relationship.destination, @@ -294,13 +294,7 @@ defmodule Ash.Actions.SideLoad do path ) else - side_load_query( - relationship, - related_query, - path, - root_query, - use_data_for_filter? - ) + Map.get(data, request_path).query end with {:ok, query} <- new_query, @@ -348,6 +342,13 @@ defmodule Ash.Actions.SideLoad do [[:include, Enum.map(path, &Map.get(&1, :name)), :data]] end + dependencies = + if use_data_for_filter? do + [[:data, :data] | dependencies] + else + [[:include, join_relationship_path, :query] | dependencies] + end + related_query = related_query.api.query(join_relationship.destination) Ash.Engine.Request.new( @@ -379,13 +380,7 @@ defmodule Ash.Actions.SideLoad do path ) else - side_load_query( - join_relationship, - related_query, - join_relationship_path, - root_query, - use_data_for_filter? - ) + Map.get(data, [:include, join_relationship_path]).query end with {:ok, query} <- new_query,