fix: support dependencies on pruned branch steps

This commit is contained in:
Zach Daniel 2022-12-19 01:49:36 -05:00
parent f882889751
commit c4b2701d65
3 changed files with 25 additions and 3 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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