1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum EmbeddingError {
8 #[error("invalid embedding config: {0}")]
10 Config(String),
11
12 #[error("invalid embedding request: {0}")]
14 InvalidRequest(String),
15
16 #[error("embedding provider returned {status}: {message}")]
18 Provider {
19 status: u16,
21 message: String,
23 },
24
25 #[error("failed to decode embedding response: {0}")]
27 Decode(String),
28
29 #[error("embedding transport failure: {0}")]
31 Transport(String),
32}
33
34pub type Result<T> = std::result::Result<T, EmbeddingError>;
36
37impl From<reqwest::Error> for EmbeddingError {
38 fn from(err: reqwest::Error) -> Self {
39 if let Some(status) = err.status() {
40 EmbeddingError::Provider {
41 status: status.as_u16(),
42 message: err.to_string(),
43 }
44 } else {
45 EmbeddingError::Transport(err.to_string())
46 }
47 }
48}