Start refactoring all sql queries into separate data interaction class.
This commit is contained in:
parent
743512c614
commit
8646e8c852
@ -35,7 +35,6 @@
|
|||||||
|
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QSqlError>
|
#include <QSqlError>
|
||||||
#include <QSqlQuery>
|
|
||||||
#include <QSqlRecord>
|
#include <QSqlRecord>
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <QStack>
|
#include <QStack>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "miscellaneous/iconfactory.h"
|
#include "miscellaneous/iconfactory.h"
|
||||||
#include "gui/dialogs/formmain.h"
|
#include "gui/dialogs/formmain.h"
|
||||||
#include "services/abstract/serviceroot.h"
|
#include "services/abstract/serviceroot.h"
|
||||||
|
#include "miscellaneous/databasequeries.h"
|
||||||
|
|
||||||
#include <QSqlRecord>
|
#include <QSqlRecord>
|
||||||
#include <QSqlError>
|
#include <QSqlError>
|
||||||
@ -258,18 +259,7 @@ bool MessagesModel::setMessageRead(int row_index, RootItem::ReadStatus read) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSqlQuery query_read_msg(database());
|
if (DatabaseQueries::markMessageReadUnread(database(), message.m_id, read)) {
|
||||||
query_read_msg.setForwardOnly(true);
|
|
||||||
|
|
||||||
if (!query_read_msg.prepare(QSL("UPDATE Messages SET is_read = :read WHERE id = :id;"))) {
|
|
||||||
qWarning("Query preparation failed for message read change.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
query_read_msg.bindValue(QSL(":id"), message.m_id);
|
|
||||||
query_read_msg.bindValue(QSL(":read"), (int) read);
|
|
||||||
|
|
||||||
if (query_read_msg.exec()) {
|
|
||||||
return m_selectedItem->getParentServiceRoot()->onAfterSetMessagesRead(m_selectedItem, QList<Message>() << message, read);
|
return m_selectedItem->getParentServiceRoot()->onAfterSetMessagesRead(m_selectedItem, QList<Message>() << message, read);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
39
src/miscellaneous/databasequeries.cpp
Normal file
39
src/miscellaneous/databasequeries.cpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// This file is part of RSS Guard.
|
||||||
|
//
|
||||||
|
// Copyright (C) 2011-2016 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
|
//
|
||||||
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// RSS Guard is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "miscellaneous/databasequeries.h"
|
||||||
|
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
|
|
||||||
|
bool DatabaseQueries::markMessageReadUnread(QSqlDatabase db, int id, RootItem::ReadStatus read) {
|
||||||
|
QSqlQuery query_read_msg(db);
|
||||||
|
query_read_msg.setForwardOnly(true);
|
||||||
|
|
||||||
|
if (!query_read_msg.prepare(QSL("UPDATE Messages SET is_read = :read WHERE id = :id;"))) {
|
||||||
|
qWarning("Query preparation failed for message read change.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
query_read_msg.bindValue(QSL(":id"), id);
|
||||||
|
query_read_msg.bindValue(QSL(":read"), (int) read);
|
||||||
|
|
||||||
|
return query_read_msg.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
DatabaseQueries::DatabaseQueries() {
|
||||||
|
}
|
35
src/miscellaneous/databasequeries.h
Normal file
35
src/miscellaneous/databasequeries.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// This file is part of RSS Guard.
|
||||||
|
//
|
||||||
|
// Copyright (C) 2011-2016 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
|
//
|
||||||
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// RSS Guard is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef DATABASEQUERIES_H
|
||||||
|
#define DATABASEQUERIES_H
|
||||||
|
|
||||||
|
#include "services/abstract/rootitem.h"
|
||||||
|
|
||||||
|
#include <QSqlQuery>
|
||||||
|
|
||||||
|
|
||||||
|
class DatabaseQueries {
|
||||||
|
public:
|
||||||
|
static bool markMessageReadUnread(QSqlDatabase db, int id, RootItem::ReadStatus read);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit DatabaseQueries();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DATABASEQUERIES_H
|
@ -383,7 +383,7 @@ bool StandardFeed::removeItself() {
|
|||||||
|
|
||||||
// Remove all messages from this standard feed.
|
// Remove all messages from this standard feed.
|
||||||
query_remove.prepare(QSL("DELETE FROM Messages WHERE feed = :feed;"));
|
query_remove.prepare(QSL("DELETE FROM Messages WHERE feed = :feed;"));
|
||||||
query_remove.bindValue(QSL(":feed"), id());
|
query_remove.bindValue(QSL(":feed"), customId());
|
||||||
|
|
||||||
if (!query_remove.exec()) {
|
if (!query_remove.exec()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -213,14 +213,13 @@ bool TtRssFeed::removeItself() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove feed itself.
|
// Remove feed itself.
|
||||||
query_remove.prepare(QSL("DELETE FROM Feeds WHERE custom_id = :feed;"));
|
query_remove.prepare(QSL("DELETE FROM Feeds WHERE id = :feed;"));
|
||||||
query_remove.bindValue(QSL(":feed"), customId());
|
query_remove.bindValue(QSL(":feed"), id());
|
||||||
|
|
||||||
return query_remove.exec();
|
return query_remove.exec();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
qWarning("TT-RSS: Unsubscribing from feed failed, received JSON: '%s'", qPrintable(response.toString()));
|
qWarning("TT-RSS: Unsubscribing from feed failed, received JSON: '%s'", qPrintable(response.toString()));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user