use hyperdb_api::{Connection, CreateMode, HyperProcess, Result};
use hyperdb_api_core::types::oids;
fn main() -> Result<()> {
let hyper = HyperProcess::new(None, None)?;
let endpoint = hyper.require_endpoint()?;
let db_path = std::env::temp_dir().join("prepared_statements_example.hyper");
if db_path.exists() {
std::fs::remove_file(&db_path).ok();
}
let conn = Connection::connect(
endpoint,
db_path.to_str().expect("utf-8 path"),
CreateMode::CreateIfNotExists,
)?;
conn.execute_command("CREATE TABLE users (id INT NOT NULL, name TEXT)")?;
let insert = conn.prepare_typed(
"INSERT INTO users VALUES ($1, $2)",
&[oids::INT, oids::TEXT],
)?;
for (id, name) in &[(1i32, "Alice"), (2, "Bob"), (3, "Carol"), (4, "Dave")] {
insert.execute(&[id, name])?;
}
let lookup = conn.prepare_typed("SELECT name FROM users WHERE id = $1", &[oids::INT])?;
for id in [1i32, 3, 4] {
let name: String = lookup.fetch_scalar(&[&id])?;
println!("user {id}: {name}");
}
let list_all = conn.prepare("SELECT id, name FROM users ORDER BY id")?;
let rows = list_all.fetch_all(&[])?;
println!("total users: {}", rows.len());
conn.close()?;
Ok(())
}