Current section
Files
Jump to
Current section
Files
lib/asm/options/provider_native_option_error.ex
defmodule ASM.Options.ProviderNativeOptionError do
@moduledoc """
Returned when provider-native behavior is passed through the generic ASM path.
"""
defexception [:key, :provider, :mode, :reason, :migration, :message]
@type t :: %__MODULE__{
key: atom(),
provider: atom() | nil,
mode: atom() | nil,
reason: atom(),
migration: String.t() | nil,
message: String.t()
}
@impl true
def exception(opts) do
key = Keyword.fetch!(opts, :key)
provider = Keyword.get(opts, :provider)
mode = Keyword.get(opts, :mode)
reason = Keyword.get(opts, :reason, :provider_native)
migration = Keyword.get(opts, :migration)
message =
Keyword.get_lazy(opts, :message, fn ->
"option #{inspect(key)} is provider-native or an unsafe escape hatch and is not part of ASM's strict common contract"
end)
%__MODULE__{
key: key,
provider: provider,
mode: mode,
reason: reason,
migration: migration,
message: message
}
end
end