1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
//! Error types for the Supabase SDK.
//!
//! This module provides a unified error type ([`SupaError`]) for all SDK operations.
//!
//! # Error Handling Example
//!
//! ```rust,no_run
//! use pixeluvw_supabase::{SupabaseClient, SupaError};
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! dotenv::dotenv().ok();
//!
//! let client = match SupabaseClient::from_env() {
//! Ok(c) => c,
//! Err(SupaError::ClientError { message }) => {
//! eprintln!("Configuration error: {}", message);
//! return Err(message.into());
//! }
//! Err(e) => return Err(e.into()),
//! };
//!
//! match client.from("users").select("*").execute::<Vec<serde_json::Value>>().await {
//! Ok(users) => println!("Found {} users", users.len()),
//! Err(SupaError::ApiError { message, .. }) => eprintln!("API error: {}", message),
//! Err(SupaError::RequestError(e)) => eprintln!("Network error: {}", e),
//! Err(e) => eprintln!("Other error: {:?}", e),
//! }
//! # Ok(())
//! # }
//! ```
use Error;
/// Unified error type for all Supabase SDK operations.
///
/// Use pattern matching to handle specific error cases:
///
/// ```rust
/// use pixeluvw_supabase::SupaError;
///
/// fn handle_error(err: SupaError) {
/// match err {
/// SupaError::ClientError { message } => println!("Config issue: {}", message),
/// SupaError::AuthError { message } => println!("Auth failed: {}", message),
/// SupaError::ApiError { message, code, .. } => println!("API error: {} ({})", message, code),
/// SupaError::RequestError(e) => println!("Network error: {}", e),
/// SupaError::JsonError(e) => println!("JSON parse error: {}", e),
/// _ => println!("Other error: {:?}", err),
/// }
/// }
/// ```
/// A specialized `Result` type for Supabase operations.
///
/// This is defined as `Result<T, SupaError>` and is used throughout the SDK.
pub type Result<T> = Result;