Skip to main content

evolve_storage/
error.rs

1//! Unified error type for the storage crate.
2
3use thiserror::Error;
4
5/// Errors produced by [`Storage`](crate::Storage) and its repositories.
6#[derive(Debug, Error)]
7pub enum StorageError {
8    /// An underlying sqlx error (connection, query, migration).
9    #[error("sqlx: {0}")]
10    Sqlx(#[from] sqlx::Error),
11    /// A JSON serialization error on a payload column.
12    #[error("json: {0}")]
13    Json(#[from] serde_json::Error),
14    /// A migration error from `sqlx::migrate!`.
15    #[error("migrate: {0}")]
16    Migrate(#[from] sqlx::migrate::MigrateError),
17    /// Failed to parse a UUID from a TEXT column.
18    #[error("uuid: {0}")]
19    Uuid(#[from] uuid::Error),
20    /// Privacy-invariant check tripped: payload looked code-like.
21    #[error("payload rejected: {0}")]
22    PayloadRejected(&'static str),
23}