51 lines
1.2 KiB
Rust
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(())
|
|
}
|