use supabase_client_rs::{Result, create_client};
#[tokio::main]
async fn main() -> Result<()> {
dotenvy::dotenv().ok();
let url = std::env::var("SUPABASE_URL").expect("SUPABASE_URL must be set");
let key = std::env::var("SUPABASE_API_KEY").expect("SUPABASE_API_KEY must be set");
let client = create_client(&url, &key)?;
let _query = client.from("users").select("*");
let _query = client.from("users").select("id, name, email");
let _query = client
.from("posts")
.select("id, title, author:users(name, email)");
let _query = client.from("users").select("*").eq("status", "active");
let _query = client.from("users").select("*").neq("role", "admin");
let _query = client
.from("products")
.select("*")
.gt("price", "100")
.lt("price", "500");
let _query = client
.from("orders")
.select("*")
.gte("quantity", "10")
.lte("quantity", "100");
let _query = client
.from("users")
.select("*")
.like("email", "%@gmail.com");
let _query = client.from("users").select("*").ilike("name", "%john%");
let _query = client.from("users").select("*").is("deleted_at", "null");
let _query = client
.from("users")
.select("*")
.in_("status", vec!["active", "pending"]);
let _query =
client
.from("posts")
.select("*")
.fts("content", "rust programming", Some("english"));
let _query = client
.from("posts")
.select("*")
.order("created_at.desc")
.limit(10)
.range(0, 9);
let _query = client
.from("users")
.insert(r#"{"name": "Alice", "email": "alice@example.com"}"#);
let _query = client.from("users").insert(
r#"[
{"name": "Bob", "email": "bob@example.com"},
{"name": "Charlie", "email": "charlie@example.com"}
]"#,
);
let _query = client
.from("users")
.update(r#"{"status": "inactive"}"#)
.eq("id", "123");
let _query = client
.from("users")
.upsert(r#"{"id": "123", "name": "Alice Updated"}"#);
let _query = client.from("users").delete().eq("status", "deleted");
let _query = client.rpc("get_user_stats", r#"{"user_id": "123"}"#);
let response = client
.from("users")
.select("*")
.limit(5)
.execute()
.await
.map_err(|e| supabase_client_rs::Error::config(format!("Request failed: {}", e)))?;
match response.status().is_success() {
true => {
let body = response.text().await.map_err(|e| {
supabase_client_rs::Error::config(format!("Failed to read response: {}", e))
})?;
let data: serde_json::Value = serde_json::from_str(&body)?;
println!("{}", serde_json::to_string_pretty(&data)?);
}
false => {
let response_status = response.status();
let error_text = response
.text()
.await
.unwrap_or_else(|_| "Unable to read error response".to_string());
eprintln!("Error: {} - {}", response_status, error_text);
}
}
println!("✓ All query examples compiled successfully!");
Ok(())
}