tcvectordb_rust/
error.rs

1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, VectorDBError>;
4
5#[derive(Error, Debug)]
6pub enum VectorDBError {
7    #[error("Parameter error: {message}")]
8    ParamError { code: i32, message: String },
9
10    #[error("Connection error: {message}")]
11    ConnectError { code: i32, message: String },
12
13    #[error("Server internal error: {message}")]
14    ServerInternalError { code: i32, message: String },
15
16    #[error("Collection describe error: {message}")]
17    DescribeCollectionError { code: i32, message: String },
18
19    #[error("HTTP request error: {0}")]
20    HttpError(#[from] reqwest::Error),
21
22    #[error("JSON serialization error: {0}")]
23    JsonError(#[from] serde_json::Error),
24
25    #[error("URL parse error: {0}")]
26    UrlError(#[from] url::ParseError),
27
28    #[error("Unexpected error: {message}")]
29    UnexpectedError { message: String },
30}
31
32impl VectorDBError {
33    pub fn param_error(code: i32, message: impl Into<String>) -> Self {
34        Self::ParamError {
35            code,
36            message: message.into(),
37        }
38    }
39
40    pub fn connect_error(code: i32, message: impl Into<String>) -> Self {
41        Self::ConnectError {
42            code,
43            message: message.into(),
44        }
45    }
46
47    pub fn server_error(code: i32, message: impl Into<String>) -> Self {
48        Self::ServerInternalError {
49            code,
50            message: message.into(),
51        }
52    }
53
54    pub fn unexpected_error(message: impl Into<String>) -> Self {
55        Self::UnexpectedError {
56            message: message.into(),
57        }
58    }
59}