semantic_query/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum QueryResolverError {
5    #[error("AI error: {0}")]
6    Ai(#[from] AIError),
7    #[error("JSON deserialization error: {0}. Raw response: {1}")]
8    JsonDeserialization(#[source] serde_json::Error, String),
9    #[error("Max retries exceeded")]
10    MaxRetriesExceeded,
11}
12
13#[derive(Error, Debug, Clone)]
14pub enum AIError {
15    #[error("Claude API error: {0}")]
16    Claude(#[from] ClaudeError),
17    #[error("OpenAI API error: {0}")]
18    OpenAI(#[from] OpenAIError),
19    #[error("DeepSeek API error: {0}")]
20    DeepSeek(#[from] DeepSeekError),
21    #[error("Mock error: {0}")]
22    Mock(String),
23}
24
25#[derive(Error, Debug, Clone)]
26pub enum ClaudeError {
27    #[error("HTTP error: {0}")]
28    Http(String),
29    #[error("API error: {0}")]
30    Api(String),
31    #[error("Rate limit exceeded")]
32    RateLimit,
33    #[error("Authentication failed")]
34    Authentication,
35}
36
37#[derive(Error, Debug, Clone)]
38pub enum OpenAIError {
39    #[error("HTTP error: {0}")]
40    Http(String),
41    #[error("API error: {0}")]
42    Api(String),
43    #[error("Rate limit exceeded")]
44    RateLimit,
45    #[error("Authentication failed")]
46    Authentication,
47}
48
49#[derive(Error, Debug, Clone)]
50pub enum DeepSeekError {
51    #[error("HTTP error: {0}")]
52    Http(String),
53    #[error("API error: {0}")]
54    Api(String),
55    #[error("Rate limit exceeded")]
56    RateLimit,
57    #[error("Authentication failed")]
58    Authentication,
59}