use rusqlite::{Connection, params};
pub type Result<T> = core::result::Result<T, Error>;
pub type Error = Box<dyn std::error::Error>;
fn main() -> Result<()> {
let conn = Connection::open_in_memory()?; create_test_schema(&conn)?;
seed_test_data(&conn)?;
pretty_sqlite::print_select(&conn, "select id, name, yob from person where id > ?", (2,))?;
Ok(())
}
pub fn create_test_schema(conn: &Connection) -> Result<()> {
conn.execute(
"CREATE TABLE IF NOT EXISTS person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
yob INTEGER, -- year of birth
data_t TEXT,
data_b BLOB
) STRICT",
(), )?;
Ok(())
}
pub fn seed_test_data(con: &Connection) -> Result<()> {
let mut stmt = con.prepare("INSERT INTO person (name, yob, data_t, data_b) VALUES (?, ?, ?, ?)")?;
for i in 1..=5 {
let name = format!("Person {i}");
let yob = 1950 + (i % 50);
let data_t = format!("Data {i}");
let data_b = vec![0u8; 10];
stmt.execute(params![name, yob, data_t, data_b])?;
}
Ok(())
}