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(); } }