defmodule Ash.Flow.Verifiers.ValidateNoEmptySteps do
@moduledoc "Validates that no nested steps contain no steps"
use Spark.Dsl.Verifier
alias Spark.Dsl.Verifier
def verify(dsl_state) do
dsl_state
|> Verifier.get_entities([:steps])
|> validate_steps!()
:ok
end
defp validate_steps!(steps, trail \\ []) do
for step <- steps do
if Map.has_key?(step, :steps) do
if Enum.empty?(step.steps || []) do
raise Spark.Error.DslError,
message: "Must have at least one step.",
path: Enum.reverse(trail, [step.name])
else
validate_steps!(step.steps, [step.name | trail])
end
end
end
end
end