diff --git a/rslib/src/search/parser.rs b/rslib/src/search/parser.rs index 92a7a3744..cca8a1817 100644 --- a/rslib/src/search/parser.rs +++ b/rslib/src/search/parser.rs @@ -314,14 +314,14 @@ fn parse_flag(s: &str) -> ParseResult> { } /// eg rated:3 or rated:10:2 -/// second arg must be between 1-4 +/// second arg must be between 0-4 fn parse_rated(val: &str) -> ParseResult> { let mut it = val.splitn(2, ':'); let days = it.next().unwrap().parse()?; let ease = match it.next() { Some(v) => { let n: u8 = v.parse()?; - if n < 5 && n > 0 { + if n < 5 { Some(n) } else { return Err(ParseError {}); diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index 9b4107245..1f5e7ef0c 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -131,7 +131,7 @@ impl SqlWriter<'_, '_> { fn write_rated(&mut self, days: u32, ease: Option) -> Result<()> { let today_cutoff = self.req.storage.timing_today()?.next_day_at; - let days = days.min(31) as i64; + let days = days.min(365) as i64; let target_cutoff_ms = (today_cutoff - 86_400 * days) * 1_000; write!( self.sql, @@ -543,10 +543,10 @@ mod test { ) ); assert_eq!( - s(ctx, "rated:40:1").0, + s(ctx, "rated:400:1").0, format!( "(c.id in (select cid from revlog where id>{} and ease=1))", - (timing.next_day_at - (86_400 * 31)) * 1_000 + (timing.next_day_at - (86_400 * 365)) * 1_000 ) );