pub struct Functions { /* private fields */ }
Expand description
Edge Functions client for invoking serverless functions
§Examples
Basic function invocation:
use supabase::Client;
use serde_json::json;
let client = Client::new("your-project-url", "your-anon-key")?;
// Invoke a function with parameters
let result = client.functions()
.invoke("hello-world", Some(json!({"name": "World"})))
.await?;
println!("Function result: {}", result);
Streaming function responses:
use supabase::Client;
use serde_json::json;
use tokio_stream::StreamExt;
let client = Client::new("your-project-url", "your-anon-key")?;
// Stream function responses
let mut stream = client.functions()
.invoke_stream("data-processor", Some(json!({"batch_size": 100})))
.await?;
while let Some(chunk) = stream.next().await {
match chunk {
Ok(data) => println!("Received: {:?}", data),
Err(e) => println!("Stream error: {}", e),
}
}
Implementations§
Source§impl Functions
impl Functions
Sourcepub fn new(
config: Arc<SupabaseConfig>,
http_client: Arc<HttpClient>,
) -> Result<Self>
pub fn new( config: Arc<SupabaseConfig>, http_client: Arc<HttpClient>, ) -> Result<Self>
Create a new Functions instance
Sourcepub async fn invoke(
&self,
function_name: &str,
body: Option<Value>,
) -> Result<Value>
pub async fn invoke( &self, function_name: &str, body: Option<Value>, ) -> Result<Value>
Invoke an Edge Function
§Parameters
function_name
- Name of the function to invokebody
- Optional JSON body to send to the function
§Examples
use serde_json::json;
// Simple function call
let result = functions.invoke("hello", None).await?;
// Function with parameters
let result = functions.invoke("process-data", Some(json!({
"user_id": 123,
"action": "update_profile"
}))).await?;
Sourcepub async fn invoke_with_options(
&self,
function_name: &str,
body: Option<Value>,
headers: Option<HashMap<String, String>>,
) -> Result<Value>
pub async fn invoke_with_options( &self, function_name: &str, body: Option<Value>, headers: Option<HashMap<String, String>>, ) -> Result<Value>
Invoke an Edge Function with custom options
§Parameters
function_name
- Name of the function to invokebody
- Optional JSON body to send to the functionheaders
- Optional additional headers to send
§Examples
use supabase::Client;
use serde_json::json;
use std::collections::HashMap;
let client = Client::new("your-project-url", "your-anon-key")?;
let mut headers = HashMap::new();
headers.insert("X-Custom-Header".to_string(), "custom-value".to_string());
let result = client.functions()
.invoke_with_options("my-function", Some(json!({"data": "value"})), Some(headers))
.await?;
Sourcepub async fn invoke_stream(
&self,
function_name: &str,
body: Option<Value>,
) -> Result<impl Stream<Item = Result<StreamChunk>>>
pub async fn invoke_stream( &self, function_name: &str, body: Option<Value>, ) -> Result<impl Stream<Item = Result<StreamChunk>>>
Invoke an Edge Function with streaming response (native only)
This method enables server-sent events or streaming responses from functions. Only available on native platforms (not WASM).
§Parameters
function_name
- Name of the function to invokebody
- Optional JSON body to send to the function
§Examples
use serde_json::json;
use tokio_stream::StreamExt;
let mut stream = functions.invoke_stream("streaming-function", Some(json!({
"mode": "realtime",
"duration": 60
}))).await?;
while let Some(chunk) = stream.next().await {
match chunk {
Ok(data) => println!("Received chunk: {}", data.data),
Err(e) => println!("Stream error: {}", e),
}
}
Sourcepub async fn get_function_metadata(
&self,
function_name: &str,
) -> Result<FunctionMetadata>
pub async fn get_function_metadata( &self, function_name: &str, ) -> Result<FunctionMetadata>
Get metadata for a specific function
§Parameters
function_name
- Name of the function to introspect
§Examples
let metadata = functions.get_function_metadata("my-function").await?;
println!("Function: {}", metadata.name);
println!("Status: {:?}", metadata.status);
println!("Memory: {:?} MB", metadata.memory_limit);
Sourcepub async fn list_functions(&self) -> Result<Vec<FunctionMetadata>>
pub async fn list_functions(&self) -> Result<Vec<FunctionMetadata>>
List all available functions with their metadata
§Examples
let functions_list = functions.list_functions().await?;
for func in functions_list {
println!("Function: {} - Status: {:?}", func.name, func.status);
}
Sourcepub async fn invoke_with_advanced_options(
&self,
function_name: &str,
body: Option<Value>,
options: InvokeOptions,
) -> Result<Value>
pub async fn invoke_with_advanced_options( &self, function_name: &str, body: Option<Value>, options: InvokeOptions, ) -> Result<Value>
Invoke a function with advanced options
§Parameters
function_name
- Name of the function to invokebody
- Optional JSON body to send to the functionoptions
- Invocation options (headers, timeout, retry, etc.)
§Examples
use supabase::functions::{InvokeOptions, RetryConfig};
use serde_json::json;
use std::{collections::HashMap, time::Duration};
let mut headers = HashMap::new();
headers.insert("X-Priority".to_string(), "high".to_string());
let options = InvokeOptions {
headers: Some(headers),
timeout: Some(Duration::from_secs(30)),
retry: Some(RetryConfig::default()),
streaming: false,
};
let result = functions.invoke_with_advanced_options(
"critical-function",
Some(json!({"data": "important"})),
options
).await?;
Sourcepub async fn test_local(
&self,
function_name: &str,
body: Option<Value>,
local_config: LocalConfig,
) -> Result<Value>
pub async fn test_local( &self, function_name: &str, body: Option<Value>, local_config: LocalConfig, ) -> Result<Value>
Test a function locally (for development)
§Parameters
function_name
- Name of the function to testbody
- Optional JSON body to send to the functionlocal_config
- Local development configuration
§Examples
use supabase::functions::LocalConfig;
use serde_json::json;
let local_config = LocalConfig {
local_url: "http://localhost:54321".to_string(),
functions_dir: Some("./functions".to_string()),
port: Some(54321),
};
let result = functions.test_local(
"my-function",
Some(json!({"test": true})),
local_config
).await?;
Sourcepub fn functions_url(&self) -> String
pub fn functions_url(&self) -> String
Get the base Functions URL
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Functions
impl !RefUnwindSafe for Functions
impl Send for Functions
impl Sync for Functions
impl Unpin for Functions
impl !UnwindSafe for Functions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more