From da1ec192fe6b39676ed4cedaae004e9386d5f52c Mon Sep 17 00:00:00 2001 From: user1823 <92206575+user1823@users.noreply.github.com> Date: Sun, 19 Oct 2025 09:36:41 +0000 Subject: [PATCH] Fix/Make descending R a pure R sort https://forums.ankiweb.net/t/follow-up-make-descending-retrievability-a-pure-r-sort/67082 --- rslib/src/storage/card/mod.rs | 14 +++++++++++--- rslib/src/storage/sqlite.rs | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/rslib/src/storage/card/mod.rs b/rslib/src/storage/card/mod.rs index 3a5066ff4..e213a0ecb 100644 --- a/rslib/src/storage/card/mod.rs +++ b/rslib/src/storage/card/mod.rs @@ -836,9 +836,17 @@ impl fmt::Display for ReviewOrderSubclause { let today = timing.days_elapsed; let next_day_at = timing.next_day_at.0; let now = timing.now.0; - temp_string = - format!("extract_fsrs_relative_retrievability(data, case when odue !=0 then odue else due end, {today}, ivl, {next_day_at}, {now}) {order}"); - &temp_string + if *order == SqlSortOrder::Ascending { + // Use relative retrievability to give higher priority to high DR cards, + // while selecting the most overdue ones first + temp_string = + format!("extract_fsrs_relative_retrievability(data, case when odue !=0 then odue else due end, {today}, ivl, {next_day_at}, {now}) asc"); + &temp_string + } else { + temp_string = + format!("extract_fsrs_retrievability(data, case when odue !=0 then odue else due end, ivl, {today}, {next_day_at}, {now}) desc"); + &temp_string + } } ReviewOrderSubclause::Added => "nid asc, ord asc", ReviewOrderSubclause::ReverseAdded => "nid desc, ord asc", diff --git a/rslib/src/storage/sqlite.rs b/rslib/src/storage/sqlite.rs index 3ce1baff0..0e7ca9941 100644 --- a/rslib/src/storage/sqlite.rs +++ b/rslib/src/storage/sqlite.rs @@ -651,7 +651,7 @@ impl SqliteStorage { } } -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq)] pub enum SqlSortOrder { Ascending, Descending,