llm_incident_manager/analytics/
error.rs

1//! Error types for analytics operations
2
3use crate::error::AppError;
4
5/// Result type for analytics operations
6pub type AnalyticsResult<T> = std::result::Result<T, AnalyticsError>;
7
8/// Errors that can occur in analytics operations
9#[derive(Debug, thiserror::Error)]
10pub enum AnalyticsError {
11    /// Invalid date range
12    #[error("Invalid date range: {0}")]
13    InvalidDateRange(String),
14
15    /// Insufficient data for analysis
16    #[error("Insufficient data for analysis: {0}")]
17    InsufficientData(String),
18
19    /// Report generation failed
20    #[error("Report generation failed: {0}")]
21    ReportGenerationFailed(String),
22
23    /// Export failed
24    #[error("Export failed: {0}")]
25    ExportFailed(String),
26
27    /// Unsupported format
28    #[error("Unsupported format: {0}")]
29    UnsupportedFormat(String),
30
31    /// Calculation error
32    #[error("Calculation error: {0}")]
33    CalculationError(String),
34
35    /// Database error
36    #[error("Database error: {0}")]
37    DatabaseError(String),
38
39    /// Invalid configuration
40    #[error("Invalid configuration: {0}")]
41    InvalidConfiguration(String),
42}
43
44impl From<AnalyticsError> for AppError {
45    fn from(err: AnalyticsError) -> Self {
46        match err {
47            AnalyticsError::InvalidDateRange(msg)
48            | AnalyticsError::InvalidConfiguration(msg) => AppError::Configuration(msg),
49            AnalyticsError::DatabaseError(msg) => AppError::Database(msg),
50            _ => AppError::Internal(err.to_string()),
51        }
52    }
53}