1use anyhow::Result;
2use std::path::Path;
3
4use crate::db;
5
6pub fn run(root: &Path) -> Result<()> {
7 let store = db::open(root)?;
8 let tasks = store.list_tasks()?;
9
10 let total = tasks.len();
11 let open = tasks
12 .iter()
13 .filter(|t| t.status == db::Status::Open)
14 .count();
15 let in_progress = tasks
16 .iter()
17 .filter(|t| t.status == db::Status::InProgress)
18 .count();
19 let closed = tasks
20 .iter()
21 .filter(|t| t.status == db::Status::Closed)
22 .count();
23
24 println!(
25 "{}",
26 serde_json::json!({
27 "total": total,
28 "open": open,
29 "in_progress": in_progress,
30 "closed": closed,
31 })
32 );
33
34 Ok(())
35}