1use reqwest::header::HeaderName;
2use reqwest::StatusCode;
3use thiserror::Error;
4
5use crate::models::QueryError;
6
7#[derive(Error, Debug)]
8pub enum Error {
9 #[error("invalid catalog")]
10 InvalidCatalog,
11 #[error("invalid schema")]
12 InvalidSchema,
13 #[error("invalid source")]
14 InvalidSource,
15 #[error("invalid user")]
16 InvalidUser,
17 #[error("invalid properties")]
18 InvalidProperties,
19 #[error("duplicate header")]
20 DuplicateHeader(HeaderName),
21 #[error("invalid empty auth")]
22 EmptyAuth,
23 #[error("basic auth can not be used with http")]
24 BasicAuthWithHttp,
25 #[error("http error, reason: {0}")]
26 HttpError(#[from] reqwest::Error),
27 #[error("http not ok, code: {0}, reason: {1}")]
28 HttpNotOk(StatusCode, String),
29 #[error("query error, reason: {0}")]
30 QueryError(#[from] QueryError),
31 #[error("inconsistent data")]
32 InconsistentData,
33 #[error("empty data")]
34 EmptyData,
35 #[error("reach max attempt: {0}")]
36 ReachMaxAttempt(usize),
37 #[error("invalid host: {0}")]
38 InvalidHost(String),
39 #[error("internal error: {0}")]
40 InternalError(String),
41}
42
43pub type Result<T> = std::result::Result<T, Error>;