use thiserror::Error;
pub type Result<T> = std::result::Result<T, OpenSearchError>;
#[derive(Error, Debug)]
pub enum OpenSearchError {
#[error("OpenSearch connection error: {0}")]
ConnectionError(String),
#[error("Query translation error: {0}")]
TranslationError(String),
#[error("Field mapping error: {0}")]
MappingError(String),
#[error("Search execution error: {0}")]
SearchError(String),
#[error("Configuration error: {0}")]
ConfigError(String),
#[error("JSON error: {0}")]
JsonError(#[from] serde_json::Error),
#[error("OpenSearch client error: {0}")]
ClientError(String),
#[error("Post-processing error: {0}")]
PostProcessingError(String),
#[error("Scroll error: {0}")]
ScrollError(String),
#[error("TQL error: {0}")]
TqlError(#[from] crate::error::TqlError),
}
impl From<opensearch::Error> for OpenSearchError {
fn from(err: opensearch::Error) -> Self {
OpenSearchError::ClientError(err.to_string())
}
}