use rusqlite::{params, Connection, Result}; pub mod messaging; #[derive(Debug)] pub struct Person { id: i32, name: String, data: Option>, } 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(()) }