Skip to main content

Rust API

Complete reference for the ReifyDB Rust client.

Installation

Add to your Cargo.toml:

[dependencies]
reifydb-client = "0.1.0"
tokio = { version = "1", features = ["full"] }

Client

Creating a Client

use reifydb_client::Client;

let client = Client::connect("reifydb://localhost:5432").await?;

Connection Options

use reifydb_client::{Client, Config};

let config = Config::builder()
.host("localhost")
.port(5432)
.user("admin")
.password("secret")
.database("mydb")
.pool_size(10)
.build();

let client = Client::with_config(config).await?;

Queries

Execute Statements

// DDL statements
client.execute("CREATE TABLE users (id INT, name TEXT)").await?;

// DML statements
let affected = client.execute("DELETE FROM users WHERE id = 1").await?;
println!("Deleted {} rows", affected);

Query Data

// Simple query
let rows = client.query("SELECT * FROM users").await?;

// Query with parameters
let rows = client.query_params(
"SELECT * FROM users WHERE age > $1",
&[&25]
).await?;

// Query single row
let row = client.query_one("SELECT * FROM users WHERE id = 1").await?;

Transactions

let mut tx = client.begin().await?;

tx.execute("INSERT INTO users (name) VALUES ('Alice')").await?;
tx.execute("INSERT INTO users (name) VALUES ('Bob')").await?;

// Commit or rollback
tx.commit().await?;
// or
tx.rollback().await?;

Prepared Statements

let stmt = client.prepare("SELECT * FROM users WHERE id = $1").await?;

let row = client.query_one(&stmt, &[&1]).await?;

Error Handling

use reifydb_client::{Error, ErrorKind};

match client.query("SELECT * FROM users").await {
Ok(rows) => process_rows(rows),
Err(Error::Connection(e)) => eprintln!("Connection error: {}", e),
Err(Error::Query(e)) => eprintln!("Query error: {}", e),
Err(e) => eprintln!("Unknown error: {}", e),
}