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}