use thiserror::Error;
#[derive(Error, Debug)]
pub enum IngestionError {
#[error("OpenRouter API error: {0}")]
OpenRouterError(String),
#[error("Ollama API error: {0}")]
OllamaError(String),
#[error("HTTP request failed: {0}")]
HttpError(#[from] reqwest::Error),
#[error("JSON parsing error: {0}")]
JsonError(#[from] serde_json::Error),
#[error("Schema parsing error: {0}")]
SchemaParsingError(String),
#[error("Mutation generation error: {0}")]
MutationGenerationError(String),
#[error("Schema creation error: {0}")]
SchemaCreationError(String),
#[error("Configuration error: {0}")]
ConfigurationError(String),
#[error("Schema system error: {0}")]
SchemaSystemError(#[from] crate::schema::SchemaError),
#[error("Database error: {0}")]
DatabaseError(String),
#[error("Invalid input data: {0}")]
InvalidInput(String),
#[error("AI response validation error: {0}")]
AIResponseValidationError(String),
#[error("Path parsing error: {0}")]
PathParsingError(String),
#[error("Field mapping error: {0}")]
FieldMappingError(String),
#[error("File conversion failed")]
FileConversionFailed,
#[error("Storage error: {0}")]
StorageError(String),
}
impl IngestionError {
pub fn openrouter_error(msg: impl Into<String>) -> Self {
Self::OpenRouterError(msg.into())
}
pub fn ollama_error(msg: impl Into<String>) -> Self {
Self::OllamaError(msg.into())
}
pub fn schema_parsing_error(msg: impl Into<String>) -> Self {
Self::SchemaParsingError(msg.into())
}
pub fn mutation_generation_error(msg: impl Into<String>) -> Self {
Self::MutationGenerationError(msg.into())
}
pub fn configuration_error(msg: impl Into<String>) -> Self {
Self::ConfigurationError(msg.into())
}
pub fn invalid_input(msg: impl Into<String>) -> Self {
Self::InvalidInput(msg.into())
}
pub fn ai_response_validation_error(msg: impl Into<String>) -> Self {
Self::AIResponseValidationError(msg.into())
}
pub fn path_parsing_error(msg: impl Into<String>) -> Self {
Self::PathParsingError(msg.into())
}
pub fn field_mapping_error(msg: impl Into<String>) -> Self {
Self::FieldMappingError(msg.into())
}
pub fn file_conversion_failed() -> Self {
Self::FileConversionFailed
}
pub fn storage_error(msg: impl Into<String>) -> Self {
Self::StorageError(msg.into())
}
}
pub type Result<T> = std::result::Result<T, IngestionError>;