lib/chaperon/action/error.ex

defmodule Chaperon.Action.Error do
  @moduledoc """
  Module for errors related to any `Chaperon.Actionable`.
  """
  alias Chaperon.Actionable
  alias Chaperon.Session

  defexception reason: nil, action: nil, session: nil

  @type t :: %__MODULE__{
          reason: any,
          action: Actionable,
          session: Session.t()
        }

  def message(%__MODULE__{reason: reason, action: action, session: session}) do
    "[Chaperon.Action.Error: #{inspect(action)} @ #{inspect(session)}] - #{inspect(reason)}"
  end
end