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}