Skip to main content

signet_storage/
error.rs

1//! Error types for unified storage operations.
2
3use crate::config::ConfigError;
4use signet_cold::ColdStorageError;
5use signet_cold_mdbx::MdbxColdError;
6use signet_hot::{HistoryError, model::HotKvError};
7use signet_hot_mdbx::MdbxError;
8
9/// Error type for unified storage operations.
10#[derive(Debug, thiserror::Error)]
11pub enum StorageError {
12    /// Error during hot storage operations.
13    #[error("hot storage error: {0}")]
14    Hot(#[source] HistoryError<HotKvError>),
15    /// Error from cold storage operations.
16    #[error("cold storage error: {0}")]
17    Cold(#[source] ColdStorageError),
18    /// Configuration error.
19    #[error("configuration error: {0}")]
20    Config(String),
21    /// MDBX hot storage error.
22    #[error("MDBX hot storage error: {0}")]
23    MdbxHot(#[from] MdbxError),
24    /// MDBX cold storage error.
25    #[error("MDBX cold storage error: {0}")]
26    MdbxCold(#[from] MdbxColdError),
27    /// SQL cold storage error.
28    #[cfg(any(feature = "postgres", feature = "sqlite"))]
29    #[error("SQL cold storage error: {0}")]
30    SqlCold(#[from] signet_cold_sql::SqlColdError),
31}
32
33impl From<HistoryError<HotKvError>> for StorageError {
34    fn from(err: HistoryError<HotKvError>) -> Self {
35        Self::Hot(err)
36    }
37}
38
39impl From<ColdStorageError> for StorageError {
40    fn from(err: ColdStorageError) -> Self {
41        Self::Cold(err)
42    }
43}
44
45impl From<HotKvError> for StorageError {
46    fn from(err: HotKvError) -> Self {
47        Self::Hot(HistoryError::Db(err))
48    }
49}
50
51impl From<ConfigError> for StorageError {
52    fn from(err: ConfigError) -> Self {
53        Self::Config(err.to_string())
54    }
55}
56
57/// Result type alias for unified storage operations.
58pub type StorageResult<T> = Result<T, StorageError>;