From 2693e142aa3e87319c78b54320b4e8fce05e1d68 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 20 Mar 2020 09:57:12 +1000 Subject: [PATCH] fix added --- rslib/src/search/sqlwriter.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index d974a9c67..1dbe8cfe6 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -58,9 +58,7 @@ impl SqlWriter<'_, '_> { SearchNode::SingleField { field, text } => { self.write_single_field(field.as_ref(), text.as_ref())? } - SearchNode::AddedInDays(days) => { - write!(self.sql, "c.id > {}", days).unwrap(); - } + SearchNode::AddedInDays(days) => self.write_added(*days)?, SearchNode::CardTemplate(template) => self.write_template(template)?, SearchNode::Deck(deck) => self.write_deck(deck.as_ref())?, SearchNode::NoteTypeID(ntid) => { @@ -306,6 +304,13 @@ impl SqlWriter<'_, '_> { .unwrap(); self.args.push(text.to_string().into()) } + + fn write_added(&mut self, days: u32) -> Result<()> { + let timing = self.req.storage.timing_today()?; + let cutoff = timing.next_day_at - (86_400 * (days as i64)); + write!(self.sql, "c.id > {}", cutoff).unwrap(); + Ok(()) + } } // Write a list of IDs as '(x,y,...)' into the provided string. @@ -403,6 +408,13 @@ mod test { ) ); + // added + let t = ctx.storage.timing_today().unwrap(); + assert_eq!( + s(ctx, "added:3").0, + format!("(c.id > {})", t.next_day_at - (86_400 * 3)) + ); + Ok(()) }) .unwrap();