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}