From 7aadb8987a6e044c7922817ce797332c4f037476 Mon Sep 17 00:00:00 2001 From: Louie S Date: Sun, 10 Mar 2024 15:10:53 -0400 Subject: Implement cleanHidden --- src/assignmentList.cpp | 3 ++- src/backend/db_sqlite.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/assignmentList.cpp b/src/assignmentList.cpp index 5168914..09ef6e3 100644 --- a/src/assignmentList.cpp +++ b/src/assignmentList.cpp @@ -128,7 +128,8 @@ void AssignmentList::reload() { } void AssignmentList::cleanHidden() { - qDebug() << "WIP"; + BackendDB database; + database.cleanHidden(); } void AssignmentList::aboutDialog() { diff --git a/src/backend/db_sqlite.cpp b/src/backend/db_sqlite.cpp index 91bb3e5..763fba5 100644 --- a/src/backend/db_sqlite.cpp +++ b/src/backend/db_sqlite.cpp @@ -245,6 +245,26 @@ int BackendDB::removeGroup(const Group &group) { return output; } +// permanently delete removed/hidden groups and entries +void BackendDB::cleanHidden() { + { + QSqlDatabase database(this->openDB()); + QSqlQuery query; + + // remove rules associated with hidden entries + query.exec("DELETE FROM rules WHERE id IN (" + "SELECT rules.id FROM rules" + "INNER JOIN entries ON rules.entry_id = entries.id" + "WHERE entries.hidden = 1)"); + // remove hidden entries + query.exec("DELETE FROM entries WHERE hidden = 1"); + // remove hidden groups + query.exec("DELETE FROM groups WHERE hidden = 1"); + } + + QSqlDatabase::removeDatabase("qt_sql_default_connection"); +} + QString BackendDB::getDBPath() { QSettings settings; settings.beginGroup("paths"); -- cgit