Skip to main content

supabase_client_sdk/
lib.rs

1//! # supabase-client-sdk
2//!
3//! A Rust client for [Supabase](https://supabase.com/) with a fluent, Supabase JS-like API.
4//! Uses the **PostgREST REST API by default** — no database connection needed. Opt into
5//! direct PostgreSQL access via [sqlx](https://github.com/launchbadge/sqlx) with the
6//! `direct-sql` feature flag.
7//!
8//! This is the main facade crate that re-exports all sub-crates behind feature flags.
9//!
10//! ## Quick Start
11//!
12//! ```rust,no_run
13//! use supabase_client_sdk::prelude::*;
14//!
15//! #[tokio::main]
16//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
17//!     let config = SupabaseConfig::new("https://your-project.supabase.co", "your-anon-key");
18//!     let client = SupabaseClient::new(config)?;
19//!
20//!     let response = client.from("cities").select("*").execute().await;
21//!     for row in response.into_result()? {
22//!         println!("{}", row.get_as::<String>("name").unwrap());
23//!     }
24//!     Ok(())
25//! }
26//! ```
27//!
28//! ## Feature Flags
29//!
30//! | Feature | Default | Description |
31//! |---------|---------|-------------|
32//! | `query` | Yes | Query builder (select, insert, update, delete, upsert, rpc) |
33//! | `derive` | Yes | `#[derive(Table)]` proc macro |
34//! | `auth` | No | GoTrue authentication client |
35//! | `realtime` | No | WebSocket realtime subscriptions |
36//! | `storage` | No | Object storage client |
37//! | `functions` | No | Edge Functions client |
38//! | `direct-sql` | No | Direct PostgreSQL via sqlx (bypasses PostgREST) |
39//! | `full` | No | All features enabled |
40
41// Re-export core (always available)
42pub use supabase_client_core::*;
43
44// Re-export query builder (feature-gated)
45#[cfg(feature = "query")]
46pub use supabase_client_query::*;
47
48// Re-export derive macros (feature-gated)
49#[cfg(feature = "derive")]
50pub use supabase_client_derive::*;
51
52// Re-export auth crate
53#[cfg(feature = "auth")]
54pub use supabase_client_auth;
55
56#[cfg(feature = "realtime")]
57pub use supabase_client_realtime;
58
59#[cfg(feature = "storage")]
60pub use supabase_client_storage;
61
62#[cfg(feature = "functions")]
63pub use supabase_client_functions;
64
65/// Prelude module for convenient imports.
66///
67/// ```ignore
68/// use supabase_client_sdk::prelude::*;
69/// ```
70pub mod prelude {
71    pub use supabase_client_core::{
72        Row, SupabaseClient, SupabaseConfig, SupabaseError, SupabaseResponse, SupabaseResult,
73    };
74    #[cfg(feature = "direct-sql")]
75    pub use supabase_client_core::PoolConfig;
76    pub use supabase_client_core::row;
77
78    #[cfg(feature = "query")]
79    pub use supabase_client_query::{
80        Filterable, Modifiable, OrderDirection, IsValue, TextSearchType,
81        SupabaseClientQueryExt, Table,
82        ExplainOptions, ExplainFormat, CountOption,
83        CsvSelectBuilder, GeoJsonSelectBuilder,
84    };
85
86    #[cfg(feature = "derive")]
87    pub use supabase_client_derive::Table;
88
89    #[cfg(feature = "auth")]
90    pub use supabase_client_auth::{
91        AuthClient, AuthError, AuthResponse, Session, User,
92        SupabaseClientAuthExt,
93        // Session state management
94        AuthChangeEvent, AuthStateChange, AuthSubscription, AutoRefreshConfig,
95        // MFA types
96        MfaEnrollParams, MfaVerifyParams, MfaChallengeParams,
97        MfaEnrollResponse, MfaTotpInfo, MfaChallengeResponse, MfaUnenrollResponse,
98        MfaListFactorsResponse, AuthenticatorAssuranceLevelInfo,
99        AuthenticatorAssuranceLevel, AmrEntry, FactorType, FactorStatus,
100        // SSO
101        SsoSignInParams, SsoSignInResponse,
102        // ID Token
103        SignInWithIdTokenParams,
104        // Identity linking
105        LinkIdentityResponse,
106        // Resend
107        ResendParams, ResendType,
108        // OAuth Server types
109        OAuthClient, OAuthClientType, OAuthClientGrantType, OAuthClientResponseType,
110        OAuthClientRegistrationType, OAuthClientListResponse,
111        OAuthAuthorizationClient, OAuthAuthorizationUser, OAuthAuthorizationDetails,
112        OAuthAuthorizationDetailsResponse, OAuthRedirect, OAuthGrant,
113        CreateOAuthClientParams, UpdateOAuthClientParams,
114        // OAuth Client-Side Flow types
115        PkceCodeVerifier, PkceCodeChallenge, PkcePair,
116        OAuthTokenResponse, OpenIdConfiguration, JwksResponse, Jwk,
117        OAuthAuthorizeUrlParams, OAuthTokenExchangeParams,
118        // Web3 auth
119        Web3Chain, Web3SignInParams,
120    };
121
122    #[cfg(feature = "realtime")]
123    pub use supabase_client_realtime::{
124        RealtimeClient, RealtimeChannel, RealtimeConfig, RealtimeError,
125        ChannelBuilder, SupabaseClientRealtimeExt,
126        PostgresChangesEvent, PostgresChangesFilter, PostgresChangePayload,
127        SubscriptionStatus, ChannelState, PresenceState, PresenceMeta,
128    };
129
130    #[cfg(feature = "storage")]
131    pub use supabase_client_storage::{
132        StorageClient, StorageBucketApi, StorageError,
133        Bucket, BucketOptions, FileObject, FileOptions,
134        SearchOptions, SortOrder, SignedUrlResponse,
135        SupabaseClientStorageExt,
136        // Phase 7: Storage enhancements
137        TransformOptions, ResizeMode, ImageFormat, FileInfo,
138    };
139
140    #[cfg(feature = "functions")]
141    pub use supabase_client_functions::{
142        FunctionsClient, FunctionsError, FunctionResponse,
143        InvokeOptions, InvokeBody, HttpMethod, FunctionRegion,
144        SupabaseClientFunctionsExt,
145    };
146}