use color_eyre::eyre::Result; use rusqlite::Connection as DbConnection; use rusqlite::NO_PARAMS; use tracing::info; mod db; mod migrations; mod model; mod section_interface; mod section_runner; #[cfg(test)] mod trace_listeners; use model::Section; fn setup_db() -> Result<DbConnection> { // let conn = DbConnection::open_in_memory()?; let mut conn = DbConnection::open("test.db")?; let migs = db::create_migrations(); migs.apply(&mut conn)?; Ok(conn) } fn query_sections(conn: &DbConnection) -> Result<Vec<Section>> { let mut statement = conn.prepare_cached("SELECT id, name, interface_id FROM sections;")?; let rows = statement.query_map(NO_PARAMS, Section::from_sql)?; Ok(rows.collect::<Result<Vec<_>, _>>()?) } fn main() -> Result<()> { env_logger::init(); color_eyre::install()?; let conn = setup_db()?; let sections = query_sections(&conn)?; for sec in sections { info!(section = debug(&sec), "read section"); } Ok(()) }