mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 05:23:03 +12:00
fix: support dependencies on pruned branch steps
This commit is contained in:
parent
f882889751
commit
c4b2701d65
3 changed files with 25 additions and 3 deletions
|
@ -696,12 +696,12 @@ defmodule Ash.Engine do
|
|||
|
||||
state
|
||||
|> Map.update!(:dependencies, fn dependencies ->
|
||||
Map.update!(dependencies, receiver_request.path, fn deps ->
|
||||
Map.update(dependencies, receiver_request.path, MapSet.new(), fn deps ->
|
||||
MapSet.delete(deps, {request_path, field})
|
||||
end)
|
||||
end)
|
||||
|> Map.update!(:reverse_dependencies, fn dependencies ->
|
||||
Map.update!(dependencies, request_path, fn deps ->
|
||||
Map.update(dependencies, request_path, MapSet.new(), fn deps ->
|
||||
MapSet.delete(deps, {receiver_request.path, field})
|
||||
end)
|
||||
end)
|
||||
|
|
|
@ -534,7 +534,23 @@ defmodule Ash.Flow.Executor.AshEngine do
|
|||
)
|
||||
), [output_path]}
|
||||
else
|
||||
{:ok, nil}
|
||||
requests =
|
||||
branch_steps
|
||||
|> step_names()
|
||||
|> Enum.map(fn name ->
|
||||
Ash.Engine.Request.new(
|
||||
authorize?: false,
|
||||
async?: false,
|
||||
name: "Set nil result for #{inspect(name)}",
|
||||
path: [name],
|
||||
data: {:ok, nil}
|
||||
)
|
||||
end)
|
||||
|
||||
{:ok, nil,
|
||||
%{
|
||||
requests: requests
|
||||
}}
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
|
|
@ -45,5 +45,11 @@ defmodule Ash.Test.Flow.Flows.Branching do
|
|||
input %{return: "second_branch happened"}
|
||||
end
|
||||
end
|
||||
|
||||
custom :depends_on_inner_branch_step, fn %{second_branch_return: value}, _ ->
|
||||
{:ok, value}
|
||||
end do
|
||||
input %{second_branch_return: result(:second_branch_return)}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue