From 366376528410f7e0f9cb4f66beabc3e747fe7c76 Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Wed, 9 Sep 2026 10:33:21 +0300 Subject: [PATCH] Db saving cases --- src/data/repositories.rs | 2 +- src/data_provider/sqlite.rs | 8 +++++++- src/pages/dictionary.rs | 3 +++ src/pages/sync.rs | 13 ++++++++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/data/repositories.rs b/src/data/repositories.rs index 8824a6b..c143693 100644 --- a/src/data/repositories.rs +++ b/src/data/repositories.rs @@ -190,7 +190,7 @@ impl, D: DbLayer> Qu .collect::>(), ); - debug!("Query for {} elements (filtered {}) takes {:?}", self.len(), self.cache.len(), time.elapsed()); + debug!("Query for {} elements (filtered {}) takes {:?}", data_repository.len(), self.cache.len(), time.elapsed()); } pub fn handles(&self) -> impl Iterator> { diff --git a/src/data_provider/sqlite.rs b/src/data_provider/sqlite.rs index 43a7da2..7fd9fab 100644 --- a/src/data_provider/sqlite.rs +++ b/src/data_provider/sqlite.rs @@ -116,9 +116,10 @@ impl SqliteConnection { error!("Ошибка при checkpoint WAL: {e}"); }); connection - .query_row("PRAGMA optimize", [], |_| Ok(())) + .execute("PRAGMA optimize", []) .unwrap_or_else(|e| { error!("Ошибка при оптимизации БД: {e}"); + 0 }); self.0 = None; @@ -127,3 +128,8 @@ impl SqliteConnection { self.0 = Some(default_connection()); } } + +impl Drop for SqliteConnection { + +fn drop(&mut self) { self.finish(); } +} \ No newline at end of file diff --git a/src/pages/dictionary.rs b/src/pages/dictionary.rs index 59c485d..0435255 100644 --- a/src/pages/dictionary.rs +++ b/src/pages/dictionary.rs @@ -106,6 +106,9 @@ impl NavigatedPage for DictionaryState { fn navigated(&mut self) { self.included = Default::default(); self.tag_map = Default::default(); + let groups = self.state.word_groups.read(); + self.groups_query.load(&groups); + drop(groups); self.update_tags(); } diff --git a/src/pages/sync.rs b/src/pages/sync.rs index 554ace7..954cc4c 100644 --- a/src/pages/sync.rs +++ b/src/pages/sync.rs @@ -273,7 +273,18 @@ impl SyncState { .unwrap_or_else(|e| { error!("Ошибка при checkpoint WAL: {e}"); }); - + connection + .execute("VACUUM;", []) + .unwrap_or_else(|e| { + error!("Ошибка при checkpoint WAL: {e}"); + 0 + }); + connection + .execute("PRAGMA optimize;", []) + .unwrap_or_else(|e| { + error!("Ошибка при checkpoint WAL: {e}"); + 0 + }); connection.finish(); } }