total_downloads/
total-downloads.rs

1//! $ cargo run --release --example total-downloads
2//!
3//! Computes time series of total downloads by day across all crates on
4//! crates.io.
5
6use chrono::Utc;
7use db_dump::Date;
8use std::collections::BTreeMap as Map;
9
10fn main() -> db_dump::Result<()> {
11    let mut downloads = Map::<Date<Utc>, u64>::new();
12    db_dump::Loader::new()
13        .version_downloads(|row| {
14            *downloads.entry(row.date).or_default() += row.downloads;
15        })
16        .load("./db-dump.tar.gz")?;
17
18    for (date, count) in downloads {
19        println!("{},{}", date, count);
20    }
21
22    Ok(())
23}