From 666ac11e2c7698e3d126fd44717587af06c1ac2c Mon Sep 17 00:00:00 2001 From: David Grundberg <75159519+individ-divided@users.noreply.github.com> Date: Fri, 9 Jan 2026 20:42:56 +0100 Subject: [PATCH] Add some utility functions for use by new "Interleaved Decks" gather priority. --- rslib/src/decks/limits.rs | 2 +- rslib/src/storage/card/mod.rs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/rslib/src/decks/limits.rs b/rslib/src/decks/limits.rs index 0866a214c..4aaa4b104 100644 --- a/rslib/src/decks/limits.rs +++ b/rslib/src/decks/limits.rs @@ -351,7 +351,7 @@ impl LimitTreeMap { .map(|node_id| self.get_node_limits(node_id)) } - fn get_root_limits(&self) -> RemainingLimits { + pub(crate) fn get_root_limits(&self) -> RemainingLimits { self.get_node_limits(self.tree.root_node_id().unwrap()) } diff --git a/rslib/src/storage/card/mod.rs b/rslib/src/storage/card/mod.rs index 9e06edf07..84a7cd6df 100644 --- a/rslib/src/storage/card/mod.rs +++ b/rslib/src/storage/card/mod.rs @@ -341,6 +341,24 @@ impl super::SqliteStorage { Ok(()) } + pub(crate) fn new_cards_in_deck( + &self, + deck: DeckId, + sort: NewCardSorting, + ) -> Result> { + let mut stmt = self.db.prepare_cached(&format!( + "{} ORDER BY {}", + include_str!("new_cards.sql"), + sort.write() + ))?; + let mut rows = stmt.query(params![deck])?; + let mut names = Vec::new(); + while let Some(row) = rows.next()? { + names.push(row_to_new_card(row)?); + } + Ok(names) + } + /// Call func() for each new card in the active decks, stopping when it /// returns false or no more cards found. pub(crate) fn for_each_new_card_in_active_decks(