use std::error::Error; use std::fmt::{Debug, Display, Formatter}; use leptos::ServerFnError; #[derive(Debug, Eq, PartialEq)] pub enum AppError { HourParseError, ServerError(String), FatalError(String) } impl AppError { fn as_string(&self) -> String { match self { AppError::HourParseError => {"Hour parse error".to_string()}, AppError::ServerError(e) => {format!("Server error: {}", e)}, AppError::FatalError(e) => {format!("Fatal error: {}", e)} } } } impl Display for AppError { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self.as_string()) } } impl Error for AppError {} impl From for AppError { fn from(value: ServerFnError) -> Self { AppError::ServerError(value.to_string()) } } #[cfg(feature = "ssr")] impl From for AppError { fn from(value: sqlx::Error) -> Self { AppError::FatalError(value.to_string()) } }