From 2349b42a13dc6cabf92b53d370245281b73c5395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Thu, 29 Jul 2021 16:47:16 +0200 Subject: date constraints --- cli/src/search.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'cli/src/search.rs') diff --git a/cli/src/search.rs b/cli/src/search.rs index d388a8b..54eea67 100644 --- a/cli/src/search.rs +++ b/cli/src/search.rs @@ -27,7 +27,30 @@ impl Constraint { fn satisfies(&self, t: &Transaction) -> bool { match self { Constraint::Category(category) => category == &t.category, - Constraint::Date(_) => todo!(), + Constraint::Date(DateFilter::Relative { + start, + end, + }) => { + if let (Some(start), Some(end)) = (start, end) { + assert!(start < end); + } + let now = chrono::offset::Local::today().naive_utc(); + let start_valid = start.map(|start| t.date > now + start).unwrap_or(true); + let end_valid = end.map(|end| t.date < now + end).unwrap_or(true); + start_valid && end_valid + }, + Constraint::Date(DateFilter::Absolute { + start, + end, + }) => { + if let (Some(start), Some(end)) = (start, end) { + assert!(start < end); + } + let now = chrono::offset::Local::today().naive_utc(); + let start_valid = start.map(|start| t.date > start).unwrap_or(true); + let end_valid = end.map(|end| t.date < end).unwrap_or(true); + start_valid && end_valid + }, } } } -- cgit v1.2.1