aboutsummaryrefslogtreecommitdiff
path: root/src/cli/mod.rs
blob: 81c58955043fbc58b52a9b881e2c2632c1de3a86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use anyhow::Result;
use chrono::Local;
use rusqlite::Connection;

use crate::{db, model::event};

pub fn today(conn: &Connection) -> Result<String> {
    let today = Local::today().naive_local();
    let mut events = db::list_non_recurring_between(conn, today, today)?;
    let recurring_events = db::list_recurring(conn)?;
    let repetitions = event::repetitions_between(&recurring_events, today, today);
    for repetition in repetitions.values().flatten() {
        events.push(repetition.clone());
    }
    events.sort_by_key(|e| e.start);
    Ok(events
        .iter()
        .map(|e| format!("{}\n", e.pprint()))
        .collect::<Vec<String>>()
        .join(""))
}