From 09fdf72d26faaeb4dfb795270ae8a9183d2d7ad5 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 9 Jul 2020 11:19:35 +0200 Subject: [PATCH] Work on SQL layer, can edit existing filters, change assignments to feeds. --- .../miscellaneous/databasequeries.cpp | 22 +++++++++++++++++++ .../miscellaneous/databasequeries.h | 1 + src/librssguard/miscellaneous/feedreader.cpp | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/librssguard/miscellaneous/databasequeries.cpp b/src/librssguard/miscellaneous/databasequeries.cpp index 56532b91c..01baf11b0 100755 --- a/src/librssguard/miscellaneous/databasequeries.cpp +++ b/src/librssguard/miscellaneous/databasequeries.cpp @@ -1480,6 +1480,28 @@ void DatabaseQueries::assignMessageFilterToFeed(const QSqlDatabase& db, const QS } } +void DatabaseQueries::updateMessageFilter(const QSqlDatabase& db, MessageFilter* filter, bool* ok) { + QSqlQuery q(db); + + q.prepare("UPDATE MessageFilters SET name = :name, script = :script WHERE id = :id;"); + + q.bindValue(QSL(":name"), filter->name()); + q.bindValue(QSL(":script"), filter->script()); + q.bindValue(QSL(":id"), filter->id()); + q.setForwardOnly(true); + + if (q.exec()) { + if (ok != nullptr) { + *ok = true; + } + } + else { + if (ok != nullptr) { + *ok = false; + } + } +} + void DatabaseQueries::removeMessageFilterFromFeed(const QSqlDatabase& db, const QString& feed_custom_id, int filter_id, int account_id, bool* ok) { QSqlQuery q(db); diff --git a/src/librssguard/miscellaneous/databasequeries.h b/src/librssguard/miscellaneous/databasequeries.h index 1a490c330..6dcc139f7 100644 --- a/src/librssguard/miscellaneous/databasequeries.h +++ b/src/librssguard/miscellaneous/databasequeries.h @@ -91,6 +91,7 @@ class DatabaseQueries { static QMultiMap messageFiltersInFeeds(const QSqlDatabase& db, int account_id, bool* ok = nullptr); static void assignMessageFilterToFeed(const QSqlDatabase& db, const QString& feed_custom_id, int filter_id, int account_id, bool* ok = nullptr); + static void updateMessageFilter(const QSqlDatabase& db, MessageFilter* filter, bool* ok = nullptr); static void removeMessageFilterFromFeed(const QSqlDatabase& db, const QString& feed_custom_id, int filter_id, int account_id, bool* ok = nullptr); diff --git a/src/librssguard/miscellaneous/feedreader.cpp b/src/librssguard/miscellaneous/feedreader.cpp index bf89b3dc2..cc50de9ed 100644 --- a/src/librssguard/miscellaneous/feedreader.cpp +++ b/src/librssguard/miscellaneous/feedreader.cpp @@ -162,7 +162,7 @@ MessageFilter* FeedReader::addMessageFilter(const QString& title, const QString& } void FeedReader::updateMessageFilter(MessageFilter* filter) { - // TODO: Filter's name or script is changed, save to database. + DatabaseQueries::updateMessageFilter(qApp->database()->connection(metaObject()->className()), filter); } void FeedReader::assignMessageFilterToFeed(Feed* feed, MessageFilter* filter) {