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§
- Application
Relation Identity - Stable per-database identities of the two typed ordinary relations.
- Application
Retention Outcome - Application
Retention Policy - Bounded retention work performed by one maintenance transaction.
- Audit
Event - Bound
Public Read Policy - Object
Id - Stable opaque identity of one logical catalog object.
- Outbox
Claim - One durable lease returned only after its claim transaction commits.
- Outbox
Message - Public
Read Column Binding - Public
Read Limits - Public
Read Relation Binding - Public
Read Relation Spec
Enums§
Constants§
Type Aliases§
- Param
Vec - Positional SQL parameters shared by API adapters and the executor.