clickhouse_utils/
error.rs

1#[derive(Debug)]
2pub struct ClickhouseUtilsError(String, Option<Box<dyn std::error::Error>>);
3
4pub type Result<T> = std::result::Result<T, ClickhouseUtilsError>;
5
6impl ClickhouseUtilsError {
7    pub fn new(message: String) -> Self {
8        ClickhouseUtilsError(message, None)
9    }
10
11    pub fn into_inner(self) -> Option<Box<dyn std::error::Error>> {
12        self.1
13    }
14
15    pub fn message(&self) -> &str {
16        &self.0
17    }
18}
19
20impl std::fmt::Display for ClickhouseUtilsError {
21    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22        write!(f, "ClickhouseUtils error: {}", self.0)
23    }
24}
25
26impl std::error::Error for ClickhouseUtilsError {}
27
28impl From<std::io::Error> for ClickhouseUtilsError {
29    fn from(error: std::io::Error) -> Self {
30        ClickhouseUtilsError(format!("IO error: {}", error), Some(Box::new(error)))
31    }
32}
33
34impl From<clickhouse::error::Error> for ClickhouseUtilsError {
35    fn from(error: clickhouse::error::Error) -> Self {
36        ClickhouseUtilsError(
37            format!("Clickhouse error: {}", error),
38            Some(Box::new(error)),
39        )
40    }
41}
42
43impl From<std::time::SystemTimeError> for ClickhouseUtilsError {
44    fn from(error: std::time::SystemTimeError) -> Self {
45        ClickhouseUtilsError(
46            format!("System time error: {}", error),
47            Some(Box::new(error)),
48        )
49    }
50}