From f4903725aa320ca9fb6b344945182d7e1b08ccc0 Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Sun, 4 Oct 2026 16:47:16 +0300 Subject: [PATCH] deck list code --- src/data_provider/import.rs | 24 +++++++++++++++++++++--- src/tests.rs | 18 +++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/data_provider/import.rs b/src/data_provider/import.rs index 4043dcb..b3eebe1 100644 --- a/src/data_provider/import.rs +++ b/src/data_provider/import.rs @@ -93,9 +93,7 @@ fn load_old_schema(connection: &Connection) -> Result Result { - return Err(IncorrectAnkiFile); -} + pub fn get_words_of_group( connection: &Connection, group_id: u64, @@ -119,3 +117,23 @@ pub fn get_words_of_group( .filter_map(|x| x.ok()) .collect::>()) } + +fn load_new_schema(connection: &Connection) -> Result { + return Err(IncorrectAnkiFile); +} + +pub struct DeckHeader { + pub id: u64, + pub name: String, + pub count: u64, +} + +pub fn load_decks(connection: &Connection) -> Result, NotificationData> { + let mut stmt = connection + .prepare("select id, name from decks") + .unwrap(); + Ok(stmt.query_map([], |row| Ok(DeckHeader{ + id: row.get::(0)? as u64, + name: row.get(1)? + })).unwrap().filter_map(|x| x.ok()).collect::>()) +} \ No newline at end of file diff --git a/src/tests.rs b/src/tests.rs index 584b91e..35fcea6 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,5 +1,5 @@ #[cfg(test)] -mod mod_tests { +mod data_access { use crate::data::Id; use crate::data::entities::{EntityData, EntityHandle}; use crate::data::repositories::fast_position_of; @@ -121,3 +121,19 @@ mod mod_tests { assert_eq!(entity.index(), 0) } } + +#[cfg(test)] +mod anki_import{ + use std::path::{Path, PathBuf}; + use rusqlite::Connection; + use crate::data_provider::import::load_decks; + use crate::notification::NotificationData::IncorrectAnkiFile; + + #[test] + pub fn decks(){ + let file_name = Path::new("import"); + let connection = Connection::open(file_name).unwrap(); + let decks = load_decks(&connection).unwrap(); + assert_eq!(decks.len(), 2); + } +} \ No newline at end of file