llm_incident_manager/search/
error.rs

1//! Error types for search operations
2
3use crate::error::AppError;
4
5/// Result type for search operations
6pub type SearchResult<T> = std::result::Result<T, SearchError>;
7
8/// Errors that can occur during search operations
9#[derive(Debug, thiserror::Error)]
10pub enum SearchError {
11    /// Index initialization failed
12    #[error("Index initialization failed: {0}")]
13    IndexInitFailed(String),
14
15    /// Index not found
16    #[error("Index not found: {0}")]
17    IndexNotFound(String),
18
19    /// Query parsing failed
20    #[error("Query parsing failed: {0}")]
21    QueryParsingFailed(String),
22
23    /// Search execution failed
24    #[error("Search execution failed: {0}")]
25    SearchFailed(String),
26
27    /// Document indexing failed
28    #[error("Document indexing failed: {0}")]
29    IndexingFailed(String),
30
31    /// Document deletion failed
32    #[error("Document deletion failed: {0}")]
33    DeletionFailed(String),
34
35    /// Schema error
36    #[error("Schema error: {0}")]
37    SchemaError(String),
38
39    /// IO error
40    #[error("IO error: {0}")]
41    IoError(#[from] std::io::Error),
42
43    /// Invalid configuration
44    #[error("Invalid configuration: {0}")]
45    InvalidConfiguration(String),
46
47    /// Index corruption
48    #[error("Index corruption detected: {0}")]
49    IndexCorruption(String),
50
51    /// Tantivy error
52    #[error("Tantivy error: {0}")]
53    TantivyError(String),
54}
55
56impl From<tantivy::TantivyError> for SearchError {
57    fn from(err: tantivy::TantivyError) -> Self {
58        SearchError::TantivyError(err.to_string())
59    }
60}
61
62impl From<tantivy::query::QueryParserError> for SearchError {
63    fn from(err: tantivy::query::QueryParserError) -> Self {
64        SearchError::QueryParsingFailed(err.to_string())
65    }
66}
67
68impl From<SearchError> for AppError {
69    fn from(err: SearchError) -> Self {
70        match err {
71            SearchError::InvalidConfiguration(msg) => AppError::Configuration(msg),
72            SearchError::IoError(err) => AppError::Internal(err.to_string()),
73            _ => AppError::Internal(err.to_string()),
74        }
75    }
76}