From 81d851610ef797a972d92e7e3ed2420844a2f633 Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 11 Jan 2021 17:25:42 +0100 Subject: [PATCH] Coerce resched:days as well --- rslib/src/search/parser.rs | 7 +++++-- rslib/src/search/sqlwriter.rs | 9 +++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/rslib/src/search/parser.rs b/rslib/src/search/parser.rs index c58e90b90..fe0b6b3cc 100644 --- a/rslib/src/search/parser.rs +++ b/rslib/src/search/parser.rs @@ -358,7 +358,7 @@ fn parse_flag(s: &str) -> ParseResult> { } /// eg rated:3 or rated:10:2 -/// second arg must be between 0-4 +/// second arg must be between 1-4 fn parse_rated(val: &str) -> ParseResult> { let mut it = val.splitn(2, ':'); @@ -383,7 +383,10 @@ fn parse_rated(val: &str) -> ParseResult> { /// eg resched:3 fn parse_resched(val: &str) -> ParseResult> { let mut it = val.splitn(1, ':'); - let days = it.next().unwrap().parse()?; + + let n: u32 = it.next().unwrap().parse()?; + let days = n.max(1).min(365); + let ease = EaseKind::Manually; Ok(SearchNode::Rated { days, ease }) diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index 3b63c2472..2dafd9386 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -732,6 +732,15 @@ mod test { ); assert_eq!(s(ctx, "rated:0").0, s(ctx, "rated:1").0); + // resched + assert_eq!( + s(ctx, "resched:400").0, + format!( + "(c.id in (select cid from revlog where id>{} and ease = 0))", + (timing.next_day_at - (86_400 * 365)) * 1_000 + ) + ); + // props assert_eq!(s(ctx, "prop:lapses=3").0, "(lapses = 3)".to_string()); assert_eq!(s(ctx, "prop:ease>=2.5").0, "(factor >= 2500)".to_string());