blob: f81b855b20bf8acdc3be8c5b0961bad0a04eca3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use anyhow::Result;
use rusqlite::Connection;
use uuid::Uuid;
use crate::model::category::Category;
pub fn list(conn: &Connection) -> Result<Vec<Category>> {
let query = r#"SELECT id, name, color FROM categories"#;
let mut stmt = conn.prepare(query)?;
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<Category> {
let id = Uuid::parse_str(&id)?;
Ok(Category { id, name, color })
}
|