Skip to content

API Reference

Database

The main entry point for all operations.

Database::open(path, config) -> Result<Database>

Opens or creates a database at the given path.

let db = Database::open("my_data", Config::default())?;

Database::sql(query, params) -> Result<QueryResult>

Executes a SQL query with optional parameters.

let results = db.sql("SELECT * FROM users WHERE id = $1", &[Value::Text("u1".into())])?;

Database::put(key, value) -> Result<()>

Writes a key-value pair.

db.put("user/alice", Value::Text("Alice".into()))?;

Database::get(key) -> Result<Option<Value>>

Reads the latest value for a key.

if let Some(value) = db.get("user/alice")? {
println!("{:?}", value);
}

Database::get_as_of(key, commit_ts) -> Result<Option<Value>>

Reads a key at a specific commit timestamp.

let value = db.get_as_of("user/alice", 500)?;

Database::put_temporal(key, value, valid_from, valid_to) -> Result<()>

Writes a fact with explicit business time.

db.put_temporal("policy/rate", Value::Real(4.25), 1704067200, 1735689600)?;

Database::scan_prefix(prefix) -> Result<Vec<(String, Value)>>

Scans all keys with a given prefix.

let results = db.scan_prefix("user/")?;

Database::put_batch(entries) -> Result<()>

Writes multiple key-value pairs in a batch.

let batch = vec![
("k1", Value::Text("v1".into())),
("k2", Value::Text("v2".into())),
];
db.put_batch(batch)?;

Database::subscribe() -> Result<ChangeStream>

Subscribes to real-time change events.

let mut stream = db.subscribe()?;

QueryResult

Returned by Database::sql().

FieldTypeDescription
columnsVec<String>Column names
rowsVec<Vec<Value>>Row data
rows_affectedusizeNumber of rows affected (for DML)

Value

The universal value type.

pub enum Value {
Null,
Bool(bool),
Integer(i64),
Real(f64),
Text(String),
Blob(Vec<u8>),
Array(Vec<Value>),
Object(BTreeMap<String, Value>),
Vector(Vec<f32>),
}

Config

See Configuration Reference for all parameters.