1use anyhow::Result;
2use std::path::Path;
3
4use crate::db;
5
6pub fn run(root: &Path) -> Result<()> {
7 let conn = db::open(root)?;
8
9 let total: i64 = conn.query_row("SELECT COUNT(*) FROM tasks", [], |r| r.get(0))?;
10 let open: i64 = conn.query_row(
11 "SELECT COUNT(*) FROM tasks WHERE status = 'open'",
12 [],
13 |r| r.get(0),
14 )?;
15 let in_progress: i64 = conn.query_row(
16 "SELECT COUNT(*) FROM tasks WHERE status = 'in_progress'",
17 [],
18 |r| r.get(0),
19 )?;
20 let closed: i64 = conn.query_row(
21 "SELECT COUNT(*) FROM tasks WHERE status = 'closed'",
22 [],
23 |r| r.get(0),
24 )?;
25
26 println!(
27 "{}",
28 serde_json::json!({
29 "total": total,
30 "open": open,
31 "in_progress": in_progress,
32 "closed": closed,
33 })
34 );
35
36 Ok(())
37}