1use std::error::Error as StdError;
6use thiserror::Error;
7
8#[derive(Debug, Error)]
10pub enum CacheError {
11 #[error("Database error: {0}")]
13 Database(#[from] diesel::result::Error),
14 #[error("Database connection error: {0}")]
16 Connection(#[from] diesel::result::ConnectionError),
17 #[error("Migration error: {0}")]
19 Migration(#[from] diesel_migrations::MigrationError),
20 #[error("Connection pool get error: {0}")]
22 PoolGet(#[from] diesel_async::pooled_connection::bb8::RunError),
23 #[error("Connection pool build error: {0}")]
25 PoolBuild(#[from] diesel_async::pooled_connection::PoolError),
26 #[error("IO error: {0}")]
28 Io(#[from] std::io::Error),
29 #[error("Data corruption: {0}")]
31 DataCorruption(String),
32 #[error("Duplicated keys")]
34 DuplicatedKeys,
35}
36
37impl From<Box<dyn StdError + Send + Sync>> for CacheError {
38 fn from(e: Box<dyn StdError + Send + Sync>) -> Self {
39 CacheError::DataCorruption(format!("{e}"))
41 }
42}