aboutsummaryrefslogtreecommitdiff
path: root/src/cli/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/mod.rs')
-rw-r--r--src/cli/mod.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/cli/mod.rs b/src/cli/mod.rs
index 3674a08..aa54c08 100644
--- a/src/cli/mod.rs
+++ b/src/cli/mod.rs
@@ -1,13 +1,22 @@
use anyhow::Result;
-use chrono::{Local, NaiveDate, NaiveDateTime, TimeZone};
+use chrono::{Local, NaiveDate, NaiveDateTime, TimeDelta, TimeZone};
use rusqlite::Connection;
+use std::ops::{Add, Sub};
use crate::model::event::Event;
use crate::{db, model::event};
-pub fn today(conn: &Connection) -> Result<String> {
- let today = Local::now().date_naive();
- let events = between_inclusive(conn, today, today)?;
+pub fn parse_date(s: String) -> Option<NaiveDate> {
+ match s.as_str() {
+ "yesterday" => Some(Local::now().sub(TimeDelta::days(1)).date_naive()),
+ "today" => Some(Local::now().date_naive()),
+ "tomorrow" => Some(Local::now().add(TimeDelta::days(1)).date_naive()),
+ _ => NaiveDate::parse_from_str(&s, "%Y-%m-%d").ok(),
+ }
+}
+
+pub fn started_at_date(conn: &Connection, date: NaiveDate) -> Result<String> {
+ let events = between_inclusive(conn, date, date)?;
Ok(format_events(events))
}