From aacf24726b8ac9d3b39286ea0169ba50936bc637 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 15 Mar 2022 15:46:18 +0100 Subject: [PATCH] can remove categories and accs, now to make proper changes of parents --- src/librssguard/database/databasequeries.cpp | 8 ++++++-- src/librssguard/database/databasequeries.h | 2 +- src/librssguard/services/standard/standardcategory.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/librssguard/database/databasequeries.cpp b/src/librssguard/database/databasequeries.cpp index 17dd58c13..7a0919b5c 100644 --- a/src/librssguard/database/databasequeries.cpp +++ b/src/librssguard/database/databasequeries.cpp @@ -1492,6 +1492,8 @@ bool DatabaseQueries::purgeMessagesFromBin(const QSqlDatabase& db, bool clear_on } bool DatabaseQueries::deleteAccount(const QSqlDatabase& db, ServiceRoot* account) { + moveItem(account, false, true, {}, db); + QSqlQuery query(db); query.setForwardOnly(true); @@ -2150,13 +2152,15 @@ bool DatabaseQueries::deleteFeed(const QSqlDatabase& db, Feed* feed, int account purgeLeftoverLabelAssignments(db, account_id); } -bool DatabaseQueries::deleteCategory(const QSqlDatabase& db, int id) { +bool DatabaseQueries::deleteCategory(const QSqlDatabase& db, Category* category) { + moveItem(category, false, true, {}, db); + QSqlQuery q(db); // Remove this category from database. q.setForwardOnly(true); q.prepare(QSL("DELETE FROM Categories WHERE id = :category;")); - q.bindValue(QSL(":category"), id); + q.bindValue(QSL(":category"), category->id()); return q.exec(); } diff --git a/src/librssguard/database/databasequeries.h b/src/librssguard/database/databasequeries.h index 26cca9a2c..6b35caff4 100644 --- a/src/librssguard/database/databasequeries.h +++ b/src/librssguard/database/databasequeries.h @@ -125,7 +125,7 @@ class DatabaseQueries { static void createOverwriteFeed(const QSqlDatabase& db, Feed* feed, int account_id, int new_parent_id); static void createOverwriteCategory(const QSqlDatabase& db, Category* category, int account_id, int parent_id); static bool deleteFeed(const QSqlDatabase& db, Feed* feed, int account_id); - static bool deleteCategory(const QSqlDatabase& db, int id); + static bool deleteCategory(const QSqlDatabase& db, Category* category); template static Assignment getCategories(const QSqlDatabase& db, int account_id, bool* ok = nullptr); diff --git a/src/librssguard/services/standard/standardcategory.cpp b/src/librssguard/services/standard/standardcategory.cpp index 30209ccd8..ee9987ae0 100644 --- a/src/librssguard/services/standard/standardcategory.cpp +++ b/src/librssguard/services/standard/standardcategory.cpp @@ -94,7 +94,7 @@ bool StandardCategory::removeItself() { // Children are removed, remove this standard category too. QSqlDatabase database = qApp->database()->driver()->connection(metaObject()->className()); - return DatabaseQueries::deleteCategory(database, id()); + return DatabaseQueries::deleteCategory(database, this); } else { return false;