Rust API¶
Native Rust API for embedded database usage.
Basic Usage¶
use heliosdb_lite::{EmbeddedDatabase, Value};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create database
let db = EmbeddedDatabase::new("./data")?;
// Execute SQL
db.execute("CREATE TABLE users (id INT, name TEXT)")?;
// Insert with parameters
db.execute_params(
"INSERT INTO users VALUES ($1, $2)",
&[Value::Int4(1), Value::String("Alice".into())]
)?;
// Query
let results = db.query("SELECT * FROM users")?;
for row in results.rows {
println!("{:?}", row);
}
Ok(())
}
Core Types¶
pub struct EmbeddedDatabase { ... }
pub struct QueryResult {
pub rows: Vec<HashMap<String, Value>>,
pub columns: Vec<String>,
pub rows_affected: i64,
}
pub enum Value {
Null,
Bool(bool),
Int4(i32),
Int8(i64),
Float8(f64),
String(String),
Bytes(Vec<u8>),
Json(serde_json::Value),
Vector(Vec<f32>),
}
Transactions¶
let tx = db.begin_transaction()?;
db.execute("INSERT INTO users VALUES (1, 'Alice')")?;
db.execute("INSERT INTO users VALUES (2, 'Bob')")?;
tx.commit()?;
// Or tx.rollback()?;
Branching¶
db.create_branch("dev", Some("main"), None)?;
db.switch_branch("dev")?;
db.merge_branch("dev", "main")?;
db.drop_branch("dev")?;
Time-Travel¶
Vector Search¶
let results = db.vector_search("documents", "search query", 10)?;
for result in results {
println!("{}: {}", result.id, result.score);
}
See API Reference for complete documentation.