core/src/db/mod.rs

51 lines
1.2 KiB
Rust

use rusqlite::{params, Connection, Result};
pub mod messaging;
#[derive(Debug)]
pub struct Person {
id: i32,
name: String,
data: Option<Vec<u8>>,
}
pub fn start_db() -> Result<()> {
let conn = Connection::open("../hole.db")?;
println!("{}", conn.is_autocommit());
match conn.execute(
"CREATE TABLE person (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
data BLOB
)",
params![],
) {
Ok(_) => {}
Err(e) => println!("{:?}", e),
}
let me = Person {
id: 0,
name: "Steven".to_string(),
data: None,
};
conn.execute(
"INSERT INTO person (name, data) VALUES (?1, ?2)",
params![me.name, me.data],
)?;
let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
let person_iter = stmt.query_map(params![], |row| {
Ok(Person {
id: row.get(0)?,
name: row.get(1)?,
data: row.get(2)?,
})
})?;
for person in person_iter {
println!("Found person {:?}", person.unwrap());
}
Ok(())
}