Heavily customized version of smokesignal - https://whtwnd.com/kayrozen.com/3lpwe4ymowg2t
at main 78 lines 2.3 kB view raw
1// Error types for the filtering module 2// 3// Defines error types specific to event filtering operations, 4// integrating with the existing error handling patterns. 5 6use thiserror::Error; 7 8/// Errors that can occur during filtering operations 9#[derive(Error, Debug)] 10pub enum FilterError { 11 #[error("Database error: {0}")] 12 Database(#[from] sqlx::Error), 13 14 #[error("Storage error: {0}")] 15 Storage(#[from] crate::storage::errors::StorageError), 16 17 #[error("Invalid filter criteria: {0}")] 18 InvalidCriteria(String), 19 20 #[error("Invalid location parameters: {0}")] 21 InvalidLocation(String), 22 23 #[error("Invalid date range: {0}")] 24 InvalidDateRange(String), 25 26 #[error("Pagination error: {0}")] 27 InvalidPagination(String), 28 29 #[error("Query building error: {0}")] 30 QueryBuilder(String), 31 32 #[error("Facet calculation error: {0}")] 33 FacetCalculation(String), 34 35 #[error("Event hydration error: {0}")] 36 Hydration(String), 37 38 #[error("Cache error: {0}")] 39 Cache(String), 40 41 #[error("Serialization error: {0}")] 42 Serialization(#[from] serde_json::Error), 43} 44 45/// Result type for filtering operations 46pub type FilterResult<T> = Result<T, FilterError>; 47 48impl FilterError { 49 /// Create an invalid criteria error 50 pub fn invalid_criteria(msg: impl Into<String>) -> Self { 51 FilterError::InvalidCriteria(msg.into()) 52 } 53 54 /// Create an invalid location error 55 pub fn invalid_location(msg: impl Into<String>) -> Self { 56 FilterError::InvalidLocation(msg.into()) 57 } 58 59 /// Create an invalid date range error 60 pub fn invalid_date_range(msg: impl Into<String>) -> Self { 61 FilterError::InvalidDateRange(msg.into()) 62 } 63 64 /// Create an invalid pagination error 65 pub fn invalid_pagination(msg: impl Into<String>) -> Self { 66 FilterError::InvalidPagination(msg.into()) 67 } 68 69 /// Create a cache operation failed error 70 pub fn cache_operation_failed(operation: &str, details: &str) -> Self { 71 FilterError::Cache(format!("{}: {}", operation, details)) 72 } 73 74 /// Create a serialization error 75 pub fn serialization_error(details: &str) -> Self { 76 FilterError::Cache(format!("Serialization failed: {}", details)) 77 } 78}