diff --git a/rslib/src/search/sqlwriter.rs b/rslib/src/search/sqlwriter.rs index 1dbe8cfe6..f1b015470 100644 --- a/rslib/src/search/sqlwriter.rs +++ b/rslib/src/search/sqlwriter.rs @@ -187,7 +187,13 @@ impl SqlWriter<'_, '_> { "*" => write!(self.sql, "true").unwrap(), "filtered" => write!(self.sql, "c.odid > 0").unwrap(), deck => { - let all_decks = self.req.storage.all_decks()?; + let all_decks: Vec<_> = self + .req + .storage + .all_decks()? + .into_iter() + .map(|(_, v)| v) + .collect(); let dids_with_children = if deck == "current" { let config = self.req.storage.all_config()?; let mut dids_with_children = vec![config.current_deck_id]; @@ -415,6 +421,11 @@ mod test { format!("(c.id > {})", t.next_day_at - (86_400 * 3)) ); + // deck + assert_eq!(s(ctx, "deck:default"), ("(c.did in (1))".into(), vec![],)); + assert_eq!(s(ctx, "deck:current"), ("(c.did in (1))".into(), vec![],)); + assert_eq!(s(ctx, "deck:filtered"), ("(c.odid > 0)".into(), vec![],)); + Ok(()) }) .unwrap(); diff --git a/rslib/src/storage/sqlite.rs b/rslib/src/storage/sqlite.rs index a36497fa1..8b61a6730 100644 --- a/rslib/src/storage/sqlite.rs +++ b/rslib/src/storage/sqlite.rs @@ -223,7 +223,7 @@ impl StorageContext<'_> { } } - pub(crate) fn all_decks(&self) -> Result> { + pub(crate) fn all_decks(&self) -> Result> { self.db .query_row_and_then("select decks from col", NO_PARAMS, |row| -> Result<_> { Ok(serde_json::from_str(row.get_raw(0).as_str()?)?)