#[cfg(feature = "auth")]
mod auth;
#[cfg(feature = "auth")]
mod auth_store;
mod builder;
mod client_builder;
mod config;
mod core;
mod error;
#[cfg(feature = "functions")]
mod functions;
#[cfg(feature = "realtime")]
mod realtime;
mod schema;
#[cfg(feature = "storage")]
mod storage;
pub use builder::QueryBuilder;
pub use client_builder::SupabaseClientBuilder;
pub use config::ClientConfig;
pub use core::{Middleware, RequestContext, SupabaseClient};
pub use schema::{ColumnSchema, Schema, TableSchema};
#[cfg(feature = "auth")]
pub use auth::{AuthService, OtpType, Provider, SignUpResult};
#[cfg(feature = "auth")]
pub use auth_store::{FileSessionStore, MemorySessionStore, SessionStore};
#[cfg(feature = "auth")]
pub use core::{Session, User};
#[cfg(feature = "storage")]
pub use storage::{Bucket, StorageBucket, StorageClient, UploadedFile};
#[cfg(feature = "functions")]
pub use functions::FunctionsClient;
#[cfg(feature = "realtime")]
pub use realtime::{
ConnectionState, PostgresEvent, RealtimeChannel, RealtimeChannelBuilder, RealtimeClient,
RealtimeMessage,
};
pub use error::{Result, SupaError};
pub mod prelude {
pub use super::{
ClientConfig, Middleware, QueryBuilder, RequestContext, SupaError, SupabaseClient,
};
#[cfg(feature = "auth")]
pub use super::{AuthService, OtpType, Provider, Session, User};
#[cfg(feature = "storage")]
pub use super::{Bucket, StorageBucket, StorageClient, UploadedFile};
#[cfg(feature = "functions")]
pub use super::FunctionsClient;
#[cfg(feature = "realtime")]
pub use super::{PostgresEvent, RealtimeChannelBuilder, RealtimeClient, RealtimeMessage};
}
#[macro_export]
macro_rules! supabase {
() => {{
use $crate::SupabaseClient;
let url = std::env::var("SUPABASE_URL")
.map_err(|_| "SUPABASE_URL environment variable not set".to_string());
let key = std::env::var("SUPABASE_KEY")
.map_err(|_| "SUPABASE_KEY environment variable not set".to_string());
match (url, key) {
(Ok(u), Ok(k)) => SupabaseClient::new(u, k),
(Err(e), _) => Err($crate::SupaError::ClientError { message: e }),
(_, Err(e)) => Err($crate::SupaError::ClientError { message: e }),
}
}};
($url_env:expr, $key_env:expr) => {{
use $crate::SupabaseClient;
let url = std::env::var($url_env)
.map_err(|e| format!("{} environment variable not set: {}", $url_env, e));
let key = std::env::var($key_env)
.map_err(|e| format!("{} environment variable not set: {}", $key_env, e));
match (url, key) {
(Ok(u), Ok(k)) => SupabaseClient::new(u, k),
(Err(e), _) => Err($crate::SupaError::ClientError { message: e }),
(_, Err(e)) => Err($crate::SupaError::ClientError { message: e }),
}
}};
(url: $url:expr, key: $key:expr) => {{
use $crate::SupabaseClient;
SupabaseClient::new($url.to_string(), $key.to_string())
}};
}