use std::collections::BTreeMap;
use crate::collection::Collection;
use crate::error::Fallible;
use crate::types::date::Date;
pub fn print_due(directory: Option<String>) -> Fallible<()> {
let coll = Collection::new(directory)?;
let today = Date::today();
let due_hashes = coll.db.due_today(today)?;
let mut counts: BTreeMap<String, usize> = BTreeMap::new();
for card in &coll.cards {
if due_hashes.contains(&card.hash()) {
*counts.entry(card.deck_name().clone()).or_default() += 1;
}
}
let mut total: usize = 0;
for (deck_name, count) in &counts {
println!("{}: {}", deck_name, count);
total += count;
}
println!("Total: {}", total);
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use crate::helper::create_tmp_copy_of_test_directory;
#[test]
fn test_print_due() -> Fallible<()> {
let directory = create_tmp_copy_of_test_directory()?;
print_due(Some(directory))?;
Ok(())
}
}