1use 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#[derive(Debug, thiserror::Error)]
11pub enum StorageError {
12 #[error("hot storage error: {0}")]
14 Hot(#[source] HistoryError<HotKvError>),
15 #[error("cold storage error: {0}")]
17 Cold(#[source] ColdStorageError),
18 #[error("configuration error: {0}")]
20 Config(String),
21 #[error("MDBX hot storage error: {0}")]
23 MdbxHot(#[from] MdbxError),
24 #[error("MDBX cold storage error: {0}")]
26 MdbxCold(#[from] MdbxColdError),
27 #[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
57pub type StorageResult<T> = Result<T, StorageError>;