Expand description
§supabase-client-rs
A Rust client for Supabase, the open-source Firebase alternative.
This crate provides a unified interface to Supabase services by composing existing community crates:
- Database: Uses
postgrest-rsfor PostgREST queries - Realtime: Integrates with
supabase-realtime-rs - Auth, Storage, Functions: Extensible via traits for community implementations
§Quick Start
use supabase_client_rs::SupabaseClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a client
let client = SupabaseClient::new(
"https://your-project.supabase.co",
"your-anon-key"
)?;
// Query the database
let response = client
.from("users")
.select("id, name, email")
.eq("active", "true")
.execute()
.await?;
let body = response.text().await?;
println!("Users: {}", body);
Ok(())
}§Database Queries
The client wraps postgrest-rs and provides a fluent API for database operations:
// Select with filters
let users = client
.from("users")
.select("*")
.eq("status", "active")
.order("created_at.desc")
.limit(10)
.execute()
.await?;
// Insert
let new_user = client
.from("users")
.insert(r#"{"name": "Alice", "email": "alice@example.com"}"#)
.execute()
.await?;
// Update
let updated = client
.from("users")
.update(r#"{"status": "inactive"}"#)
.eq("id", "123")
.execute()
.await?;
// Delete
let deleted = client
.from("users")
.delete()
.eq("id", "123")
.execute()
.await?;
// RPC (stored procedures)
let result = client
.rpc("get_user_stats", r#"{"user_id": "123"}"#)
.execute()
.await?;§Configuration
For advanced configuration, use SupabaseConfig:
use supabase_client_rs::{SupabaseClient, SupabaseConfig};
use std::time::Duration;
let config = SupabaseConfig::new(
"https://your-project.supabase.co",
"your-anon-key"
)
.schema("custom_schema")
.timeout(Duration::from_secs(60))
.header("X-Custom-Header", "value");
let client = SupabaseClient::with_config(config).unwrap();§Authenticated Requests
After a user signs in, set their JWT:
// Get JWT from your auth flow
let user_jwt = "eyJhbGciOiJIUzI1NiIs...";
// Create an authenticated client
let auth_client = client.with_jwt(user_jwt)?;
// Now requests include the user's JWT
// RLS policies will apply based on the user§Extending with Community Crates
This crate defines traits for auth, storage, and functions that community
crates can implement. See the traits module for details.
§Feature Flags
rustls(default): Use rustls for TLSnative-tls: Use native TLS instead of rustlsrealtime: Enable Supabase Realtime support (requiressupabase-realtime-rs)
Re-exports§
pub use postgrest;
Modules§
- traits
- Traits for extensibility and future community crates.
Structs§
- Supabase
Client - The main Supabase client.
- Supabase
Config - Configuration options for the Supabase client.
Enums§
- Error
- The main error type for Supabase operations.
Functions§
- create_
client - Create a new Supabase client.
Type Aliases§
- Result
- A specialized Result type for Supabase operations.