Skip to main content

Crate radixdb_api

Crate radixdb_api 

Source
Expand description

Top-level Database API

This module provides the high-level database interface for RadixDB.

§Quick Start

use radixdb_api::{Database, params};

// Open an in-memory database
let db = Database::open_in_memory()?;

// Create a table
db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)", ())?;

// Insert data with parameters
db.execute("INSERT INTO users VALUES ($1, $2, $3)", (1, "Alice", 30))?;
db.execute("INSERT INTO users VALUES ($1, $2, $3)", params![2, "Bob", 25])?;

// Query data
for row in db.query("SELECT * FROM users WHERE age > $1", (20,))? {
    let row = row?;
    let id: i64 = row.get(0)?;
    let name: String = row.get(1)?;
    println!("{}: {}", id, name);
}

// Query single value
let count: i64 = db.query_one("SELECT COUNT(*) FROM users", ())?;

// Transactions
let mut tx = db.begin()?;
tx.execute("UPDATE users SET age = age + 1", ())?;
tx.commit()?;

§Parameter Binding

Parameters can be passed in several ways:

// Empty tuple for no parameters
db.execute("CREATE TABLE foo (id INTEGER)", ())?;

// Tuple syntax for inline parameters
db.execute("INSERT INTO foo VALUES ($1, $2)", (1, "Alice"))?;

// params! macro for explicit parameter list
db.execute("INSERT INTO foo VALUES ($1, $2)", params![1, "Alice"])?;

// Optional values
let name: Option<&str> = Some("Alice");
db.execute("INSERT INTO foo VALUES ($1, $2)", (1, name))?;

§Prepared Statements

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

// Execute multiple times with different parameters
for id in 1..=10 {
    for row in stmt.query((id,))? {
        // ...
    }
}

Re-exports§

pub use database::Database;
pub use database::FromValue;
pub use orm::EmbeddedAlterTableRequest;
pub use orm::EmbeddedCreateTableRequest;
pub use orm::EmbeddedDdlRequest;
pub use orm::EmbeddedDescribeDatabaseRequest;
pub use orm::EmbeddedDescribeTableRequest;
pub use orm::EmbeddedListTablesRequest;
pub use orm::EmbeddedSchemaClient;
pub use orm::EmbeddedTableColumnsRequest;
pub use orm::EmbeddedTableConstraintsRequest;
pub use orm::EmbeddedTableIndexesRequest;
pub use orm::EmbeddedTableSchemaClient;
pub use orm::OrmError;
pub use orm::OrmResult;
pub use params::DecimalValue;
pub use params::NamedParams;
pub use params::Params;
pub use params::ToParam;
pub use public_read::PublicReadCursor;
pub use public_read::PublicReadCursorKey;
pub use public_read::PublicReadError;
pub use public_read::PublicReadErrorCode;
pub use public_read::PublicReadPage;
pub use public_read::PublicReadRequest;
pub use public_read::PublicReadResult;
pub use rows::FromRow;
pub use rows::ResultRow;
pub use rows::Rows;
pub use statement::Statement;
pub use transaction::Transaction;

Modules§

application
Public audit and transactional-outbox lifecycle.
database
Database struct and operations
orm
Embedded ORM execution extensions.
params
Parameter binding for SQL queries
public_read
Public, read-only ORM admission and deterministic keyset pagination.
rows
Rows iterator for query results - Rust idiomatic API
statement
Prepared statement support
transaction
Transaction API

Macros§

named_params
Create named parameters for SQL queries
params
Create a parameter list for SQL queries

Structs§

ApplicationRelationIdentity
Stable per-database identities of the two typed ordinary relations.
ApplicationRetentionOutcome
ApplicationRetentionPolicy
Bounded retention work performed by one maintenance transaction.
AuditEvent
BoundPublicReadPolicy
ObjectId
Stable opaque identity of one logical catalog object.
OutboxClaim
One durable lease returned only after its claim transaction commits.
OutboxMessage
PublicReadColumnBinding
PublicReadLimits
PublicReadRelationBinding
PublicReadRelationSpec

Enums§

OutboxCompletion
OutboxRetryDisposition

Constants§

AUDIT_RELATION_NAME
OUTBOX_RELATION_NAME

Type Aliases§

ParamVec
Positional SQL parameters shared by API adapters and the executor.