use anyhow::Result; use rusqlite::Connection; use uuid::Uuid; use crate::model::category::Category; pub fn list(conn: &Connection) -> Result> { let mut stmt = conn.prepare("SELECT id, name, color FROM categories")?; let iter = stmt.query_map([], |row| { Ok(read_category(row.get(0)?, row.get(1)?, row.get(2)?)) })?; let mut res = vec![]; for category in iter { res.push(category??) } Ok(res) } fn read_category(id: String, name: String, color: String) -> Result { let id = Uuid::parse_str(&id)?; Ok(Category { id, name, color }) }