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