Current section

Files

Jump to
ash_state_machine lib errors no_matching_transition.ex
Raw

lib/errors/no_matching_transition.ex

# SPDX-FileCopyrightText: 2023 ash_state_machine contributors <https://github.com/ash-project/ash_state_machine/graphs/contributors>
#
# SPDX-License-Identifier: MIT
defmodule AshStateMachine.Errors.NoMatchingTransition do
@moduledoc "Used when a state change occurs in an action with no matching transition"
use Splode.Error,
fields: [:action, :target, :old_state, :field],
class: :invalid
def message(error) do
cond do
error.old_state && error.target ->
"""
Attempted to change state from #{error.old_state} to #{error.target} in action #{error.action}, but no matching transition was configured.
"""
error.old_state ->
"""
Attempted to change state from #{error.old_state} in action #{error.action}, but no matching transition was configured.
"""
true ->
"""
Attempted to change state to #{inspect(error.target)} in action #{error.action}, but no matching transition was configured.
"""
end
end
end