From 0ad4619833f9a18c4a03c3716049ace4e3046e05 Mon Sep 17 00:00:00 2001 From: abdo Date: Fri, 1 Jan 2021 03:34:25 +0300 Subject: [PATCH] Support prop:order to search for new cards by order --- rslib/src/search/parser.rs | 3 +++ rslib/src/search/sqlwriter.rs | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/rslib/src/search/parser.rs b/rslib/src/search/parser.rs index fbfc2e869..7f834c28e 100644 --- a/rslib/src/search/parser.rs +++ b/rslib/src/search/parser.rs @@ -97,6 +97,7 @@ pub(super) enum PropertyKind { Reps(u32), Lapses(u32), Ease(f32), + Order(u32), } #[derive(Debug, PartialEq)] @@ -373,6 +374,7 @@ fn parse_prop(val: &str) -> ParseResult> { tag("reps"), tag("lapses"), tag("ease"), + tag("order"), ))(val)?; let (val, operator) = alt(( @@ -396,6 +398,7 @@ fn parse_prop(val: &str) -> ParseResult> { "ivl" => PropertyKind::Interval(num), "reps" => PropertyKind::Reps(num), "lapses" => PropertyKind::Lapses(num), + "order" => PropertyKind::Order(num), _ => unreachable!(), } }; diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index f02146a38..9cfc2c895 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -247,6 +247,15 @@ impl SqlWriter<'_> { day = day ) } + PropertyKind::Order(order) => { + write!( + self.sql, + "(c.type = {t} and due {op} {order})", + t = CardType::New as u8, + op = op, + order = order + ) + } PropertyKind::Interval(ivl) => write!(self.sql, "ivl {} {}", op, ivl), PropertyKind::Reps(reps) => write!(self.sql, "reps {} {}", op, reps), PropertyKind::Lapses(days) => write!(self.sql, "lapses {} {}", op, days),