mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 13:33:20 +12:00
WIP
This commit is contained in:
parent
26cd1c4af9
commit
ccf30bafac
1 changed files with 12 additions and 17 deletions
|
@ -237,11 +237,13 @@ defmodule Ash.Actions.SideLoad do
|
||||||
[[:include, Enum.map(path, &Map.get(&1, :name)), :data]]
|
[[:include, Enum.map(path, &Map.get(&1, :name)), :data]]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
request_path = [:include, Enum.reverse(Enum.map([relationship | path], &Map.get(&1, :name)))]
|
||||||
|
|
||||||
dependencies =
|
dependencies =
|
||||||
if use_data_for_filter? do
|
if use_data_for_filter? do
|
||||||
[[:data, :data] | dependencies]
|
[[:data, :data] | dependencies]
|
||||||
else
|
else
|
||||||
dependencies
|
[request_path ++ [:query] | dependencies]
|
||||||
end
|
end
|
||||||
|
|
||||||
dependencies =
|
dependencies =
|
||||||
|
@ -257,8 +259,6 @@ defmodule Ash.Actions.SideLoad do
|
||||||
|> Enum.reverse()
|
|> Enum.reverse()
|
||||||
|> Enum.map_join(".", &Map.get(&1, :name))
|
|> Enum.map_join(".", &Map.get(&1, :name))
|
||||||
|
|
||||||
request_path = [:include, Enum.reverse(Enum.map([relationship | path], &Map.get(&1, :name)))]
|
|
||||||
|
|
||||||
Ash.Engine.Request.new(
|
Ash.Engine.Request.new(
|
||||||
action_type: :read,
|
action_type: :read,
|
||||||
resource: relationship.destination,
|
resource: relationship.destination,
|
||||||
|
@ -294,13 +294,7 @@ defmodule Ash.Actions.SideLoad do
|
||||||
path
|
path
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
side_load_query(
|
Map.get(data, request_path).query
|
||||||
relationship,
|
|
||||||
related_query,
|
|
||||||
path,
|
|
||||||
root_query,
|
|
||||||
use_data_for_filter?
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
with {:ok, query} <- new_query,
|
with {:ok, query} <- new_query,
|
||||||
|
@ -348,6 +342,13 @@ defmodule Ash.Actions.SideLoad do
|
||||||
[[:include, Enum.map(path, &Map.get(&1, :name)), :data]]
|
[[:include, Enum.map(path, &Map.get(&1, :name)), :data]]
|
||||||
end
|
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)
|
related_query = related_query.api.query(join_relationship.destination)
|
||||||
|
|
||||||
Ash.Engine.Request.new(
|
Ash.Engine.Request.new(
|
||||||
|
@ -379,13 +380,7 @@ defmodule Ash.Actions.SideLoad do
|
||||||
path
|
path
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
side_load_query(
|
Map.get(data, [:include, join_relationship_path]).query
|
||||||
join_relationship,
|
|
||||||
related_query,
|
|
||||||
join_relationship_path,
|
|
||||||
root_query,
|
|
||||||
use_data_for_filter?
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
with {:ok, query} <- new_query,
|
with {:ok, query} <- new_query,
|
||||||
|
|
Loading…
Reference in a new issue