mirror of
https://github.com/ash-project/ash_state_machine.git
synced 2024-09-21 13:53:10 +12:00
22 lines
586 B
Elixir
22 lines
586 B
Elixir
defmodule AshStateMachine.BuiltinChanges.NextState do
|
|
@moduledoc false
|
|
use Ash.Resource.Change
|
|
|
|
def change(changeset, _opts, _) do
|
|
changeset.data
|
|
|> AshStateMachine.possible_next_states(changeset.action.name)
|
|
|> case do
|
|
[to] ->
|
|
AshStateMachine.transition_state(changeset, to)
|
|
|
|
[] ->
|
|
Ash.Changeset.add_error(changeset, "Cannot determine next state: no next state available")
|
|
|
|
_ ->
|
|
Ash.Changeset.add_error(
|
|
changeset,
|
|
"Cannot determine next state: multiple next states available"
|
|
)
|
|
end
|
|
end
|
|
end
|