diff --git a/rslib/src/deckconfig/update.rs b/rslib/src/deckconfig/update.rs index 3925d56fc..b1b8417a5 100644 --- a/rslib/src/deckconfig/update.rs +++ b/rslib/src/deckconfig/update.rs @@ -22,7 +22,9 @@ use crate::scheduler::fsrs::memory_state::UpdateMemoryStateEntry; use crate::scheduler::fsrs::memory_state::UpdateMemoryStateRequest; use crate::scheduler::fsrs::weights::ignore_revlogs_before_ms_from_config; use crate::search::JoinSearches; +use crate::search::Negated; use crate::search::SearchNode; +use crate::search::StateKind; use crate::storage::comma_separated_ids; #[derive(Debug, Clone)] @@ -267,9 +269,12 @@ impl Collection { None } }); + let search = SearchNode::DeckIdsWithoutChildren(comma_separated_ids(&search)) + .and(SearchNode::State(StateKind::Suspended).negated()) + .try_into_search()?; Ok(UpdateMemoryStateEntry { req: weights, - search: SearchNode::DeckIdsWithoutChildren(comma_separated_ids(&search)), + search, ignore_before: config .map(ignore_revlogs_before_ms_from_config) .unwrap_or(Ok(0.into()))?, diff --git a/rslib/src/scheduler/fsrs/memory_state.rs b/rslib/src/scheduler/fsrs/memory_state.rs index 731fabc52..44f78130c 100644 --- a/rslib/src/scheduler/fsrs/memory_state.rs +++ b/rslib/src/scheduler/fsrs/memory_state.rs @@ -18,6 +18,7 @@ use crate::scheduler::fsrs::weights::single_card_revlog_to_items; use crate::scheduler::fsrs::weights::Weights; use crate::scheduler::states::fuzz::with_review_fuzz; use crate::search::Negated; +use crate::search::Node; use crate::search::SearchNode; use crate::search::StateKind; @@ -38,7 +39,7 @@ pub(crate) struct UpdateMemoryStateRequest { pub(crate) struct UpdateMemoryStateEntry { pub req: Option, - pub search: SearchNode, + pub search: Node, pub ignore_before: TimestampMillis, } @@ -60,8 +61,7 @@ impl Collection { ignore_before, } in entries { - let search = - SearchBuilder::all([search.into(), SearchNode::State(StateKind::New).negated()]); + let search = SearchBuilder::all([search, SearchNode::State(StateKind::New).negated()]); let revlog = self.revlog_for_srs(search)?; let reschedule = req.as_ref().map(|e| e.reschedule).unwrap_or_default(); let last_revlog_info = if reschedule {