hopr_db_node/
errors.rs

1use std::sync::Arc;
2
3use hopr_crypto_packet::errors::TicketValidationError;
4use sea_orm::TransactionError;
5
6#[derive(Debug, thiserror::Error)]
7pub enum NodeDbError {
8    #[error("cannot find a surb: {0}")]
9    NoSurbAvailable(String),
10
11    #[error("ticket validation error for {}: {}", .0.ticket, .0.reason)]
12    TicketValidationError(#[from] TicketValidationError),
13
14    #[error("failed to process acknowledgement: {0}")]
15    AcknowledgementValidationError(String),
16
17    #[error("logical error: {0}")]
18    LogicalError(String),
19
20    #[error("orm error: {0}")]
21    Orm(#[from] sea_orm::error::DbErr),
22
23    #[error("sqlite error: {0}")]
24    Sqlite(#[from] sqlx::Error),
25
26    #[error("other error: {0}")]
27    Other(Box<dyn std::error::Error + Send + Sync>),
28
29    #[error("error while inserting into cache: {0}")]
30    Cache(#[from] Arc<Self>),
31
32    #[error("custom error: {0}")]
33    Custom(String),
34
35    #[error(transparent)]
36    EntityError(#[from] hopr_db_entity::errors::DbEntityError),
37
38    #[error(transparent)]
39    PacketError(#[from] hopr_crypto_packet::errors::PacketError),
40
41    #[error(transparent)]
42    TypeError(#[from] hopr_primitive_types::errors::GeneralError),
43
44    #[error(transparent)]
45    CoreTypeError(#[from] hopr_internal_types::errors::CoreTypesError),
46
47    #[error(transparent)]
48    CryptoError(#[from] hopr_crypto_types::errors::CryptoError),
49}
50
51impl<E: std::error::Error + Send + Sync + 'static> From<TransactionError<E>> for NodeDbError {
52    fn from(value: TransactionError<E>) -> Self {
53        match value {
54            TransactionError::Connection(c) => Self::Orm(c),
55            TransactionError::Transaction(e) => Self::Other(e.into()),
56        }
57    }
58}
59
60impl<E: std::error::Error + Send + Sync + 'static> From<Arc<TransactionError<E>>> for NodeDbError {
61    fn from(value: Arc<TransactionError<E>>) -> Self {
62        Self::Custom(format!("in-cache transaction error: {value}"))
63    }
64}