1use std::fmt;
2
3#[derive(Debug)]
5pub enum WOWSQLError {
6 Authentication(String),
8 NotFound(String),
10 RateLimit(String),
12 Network(String),
14 Storage(String),
16 StorageLimitExceeded {
18 message: String,
19 required_bytes: i64,
20 available_bytes: i64,
21 },
22 PermissionDenied(String),
24 RequestFailed(String),
26 General(String),
28}
29
30impl fmt::Display for WOWSQLError {
31 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32 match self {
33 WOWSQLError::Authentication(msg) => write!(f, "Authentication error: {}", msg),
34 WOWSQLError::NotFound(msg) => write!(f, "Not found: {}", msg),
35 WOWSQLError::RateLimit(msg) => write!(f, "Rate limit exceeded: {}", msg),
36 WOWSQLError::Network(msg) => write!(f, "Network error: {}", msg),
37 WOWSQLError::Storage(msg) => write!(f, "Storage error: {}", msg),
38 WOWSQLError::StorageLimitExceeded { message, .. } => {
39 write!(f, "Storage limit exceeded: {}", message)
40 }
41 WOWSQLError::PermissionDenied(msg) => write!(f, "Permission denied: {}", msg),
42 WOWSQLError::RequestFailed(msg) => write!(f, "Request failed: {}", msg),
43 WOWSQLError::General(msg) => write!(f, "Error: {}", msg),
44 }
45 }
46}
47
48impl std::error::Error for WOWSQLError {}
49
50impl From<reqwest::Error> for WOWSQLError {
51 fn from(err: reqwest::Error) -> Self {
52 WOWSQLError::Network(err.to_string())
53 }
54}