Skip to main content

BackendError

Enum BackendError 

Source
#[non_exhaustive]
pub enum BackendError { NotADatabase, Locked, Constraint(String), Io(String), Validation(String), Unsupported { capability: &'static str, }, OpfsUnavailable(String), Other(String), }
Expand description

Backend-neutral error variants surfaced by the StorageBackend trait.

Marked #[non_exhaustive]: a future backend may surface failure modes the native one cannot, so downstream code must not assume the variant set is closed. Added before the trait’s first release so later additions stay non-breaking.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

NotADatabase

The opened file is not a valid SQLite database, or is encrypted with the wrong key.

§

Locked

The database or a table within it is locked or busy.

§

Constraint(String)

A backend-level constraint (uniqueness, check, foreign key) was violated.

§

Io(String)

An I/O error from the backend.

§

Validation(String)

A client-facing validation failure raised by a backend method (for example the tag-count limit in set_tags). Carries the original message so From<BackendError> for DynoxideError can restore it as a ValidationException rather than collapsing it to a 500.

§

Unsupported

A capability the active backend does not implement (for example streams, TTL, or the cross-item TransactWriteItems action on the wasm backend). Carries a static tag so callers can distinguish which capability was refused. Surfaces as an InternalServerError through From<BackendError> for DynoxideError.

Fields

§capability: &'static str

Static identifier for the unsupported capability, e.g. "streams".

§

OpfsUnavailable(String)

OPFS is present but its pool could not be acquired - typically another tab holds the database’s sync access handles. wasm backend only; restored by From<BackendError> for DynoxideError to a stable com.dynoxide.wasm#OpfsUnavailable envelope a browser client can react to.

§

Other(String)

Any other backend failure. Carries the original error’s Display output.

Trait Implementations§

Source§

impl Debug for BackendError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for BackendError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for BackendError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<BackendError> for DynoxideError

Most backend failures (BackendError) are storage-level faults: a locked database, an I/O error, a constraint the application layer did not anticipate. None of those is part of DynamoDB’s client-facing error contract, so they surface as InternalServerError (HTTP 500), matching how a raw rusqlite::Error surfaces via SqliteError.

The one exception is BackendError::Validation: a backend method such as set_tags enforces a client-facing limit (the 50-tag cap) and raises a ValidationException. That crosses the trait boundary as BackendError::Validation and is restored here to its ValidationException (HTTP 400) so the envelope is unchanged from calling Storage directly.

A one-way From is deliberate rather than merging the two types: BackendError is the narrow storage vocabulary, DynoxideError the wider API vocabulary. A merge is deferred.

Source§

fn from(err: BackendError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Fake for T

Source§

fn fake<U>(&self) -> U
where Self: FakeBase<U>,

Source§

fn fake_with_rng<U, R>(&self, rng: &mut R) -> U
where R: Rng + ?Sized, Self: FakeBase<U>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more