Refactored getting Message instances from DB.
This commit is contained in:
parent
c40961ccba
commit
62e87a941a
@ -17,6 +17,10 @@
|
||||
|
||||
#include "core/message.h"
|
||||
|
||||
#include "miscellaneous/textfactory.h"
|
||||
|
||||
#include <QVariant>
|
||||
|
||||
|
||||
Enclosure::Enclosure(const QString &url, const QString &mime) : m_url(url), m_mimeType(mime) {
|
||||
}
|
||||
@ -66,3 +70,35 @@ Message::Message() {
|
||||
m_accountId = m_id = 0;
|
||||
m_isRead = m_isImportant = false;
|
||||
}
|
||||
|
||||
Message Message::fromSqlRecord(const QSqlRecord &record, bool *result) {
|
||||
if (record.count() != MSG_DB_CUSTOM_ID_INDEX + 1) {
|
||||
if (result != NULL) {
|
||||
*result = false;
|
||||
return Message();
|
||||
}
|
||||
}
|
||||
|
||||
Message message;
|
||||
|
||||
message.m_id = record.value(MSG_DB_ID_INDEX).toInt();
|
||||
message.m_isRead = record.value(MSG_DB_READ_INDEX).toBool();
|
||||
//message = record.value(MSG_DB_DELETED_INDEX).toInt();
|
||||
message.m_isImportant = record.value(MSG_DB_IMPORTANT_INDEX).toBool();
|
||||
message.m_feedId = record.value(MSG_DB_FEED_INDEX).toString();
|
||||
message.m_title = record.value(MSG_DB_TITLE_INDEX).toString();
|
||||
message.m_url = record.value(MSG_DB_URL_INDEX).toString();
|
||||
message.m_author = record.value(MSG_DB_AUTHOR_INDEX).toString();
|
||||
message.m_created = TextFactory::parseDateTime(record.value(MSG_DB_DCREATED_INDEX).value<qint64>());
|
||||
message.m_contents = record.value(MSG_DB_CONTENTS_INDEX).toString();
|
||||
//message = record.value(MSG_DB_PDELETED_INDEX).toInt();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(record.value(MSG_DB_ENCLOSURES_INDEX).toString());
|
||||
message.m_accountId = record.value(MSG_DB_ACCOUNT_ID_INDEX).toInt();
|
||||
message.m_customId = record.value(MSG_DB_CUSTOM_ID_INDEX).toString();
|
||||
|
||||
if (result != NULL) {
|
||||
*result = true;
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QStringList>
|
||||
#include <QSqlRecord>
|
||||
|
||||
|
||||
// Represents single enclosure.
|
||||
@ -44,6 +45,10 @@ class Message {
|
||||
public:
|
||||
explicit Message();
|
||||
|
||||
// Creates Message from given record, which contains
|
||||
// row from query SELECT * FROM Messages WHERE ....;
|
||||
static Message fromSqlRecord(const QSqlRecord &record, bool *result = NULL);
|
||||
|
||||
QString m_title;
|
||||
QString m_url;
|
||||
QString m_author;
|
||||
|
@ -130,22 +130,7 @@ void MessagesModel::reloadWholeLayout() {
|
||||
}
|
||||
|
||||
Message MessagesModel::messageAt(int row_index) const {
|
||||
QSqlRecord rec = record(row_index);
|
||||
Message message;
|
||||
|
||||
// Fill Message object with details.
|
||||
message.m_author = rec.value(MSG_DB_AUTHOR_INDEX).toString();
|
||||
message.m_contents = rec.value(MSG_DB_CONTENTS_INDEX).toString();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(rec.value(MSG_DB_ENCLOSURES_INDEX).toString());
|
||||
message.m_title = rec.value(MSG_DB_TITLE_INDEX).toString();
|
||||
message.m_url = rec.value(MSG_DB_URL_INDEX).toString();
|
||||
message.m_feedId = rec.value(MSG_DB_FEED_INDEX).toString();
|
||||
message.m_accountId = rec.value(MSG_DB_ACCOUNT_ID_INDEX).toInt();
|
||||
message.m_id = rec.value(MSG_DB_ID_INDEX).toInt();
|
||||
message.m_customId = rec.value(MSG_DB_CUSTOM_ID_INDEX).toString();
|
||||
message.m_created = TextFactory::parseDateTime(rec.value(MSG_DB_DCREATED_INDEX).value<qint64>()).toLocalTime();
|
||||
|
||||
return message;
|
||||
return Message::fromSqlRecord(record(row_index));
|
||||
}
|
||||
|
||||
void MessagesModel::setupHeaderData() {
|
||||
|
@ -93,7 +93,7 @@ QList<Message> RecycleBin::undeletedMessages() const {
|
||||
QSqlQuery query_read_msg(database);
|
||||
|
||||
query_read_msg.setForwardOnly(true);
|
||||
query_read_msg.prepare("SELECT title, url, author, date_created, contents, enclosures, custom_id, id, feed "
|
||||
query_read_msg.prepare("SELECT * "
|
||||
"FROM Messages "
|
||||
"WHERE is_deleted = 1 AND is_pdeleted = 0 AND account_id = :account_id;");
|
||||
query_read_msg.bindValue(QSL(":account_id"), account_id);
|
||||
@ -102,18 +102,12 @@ QList<Message> RecycleBin::undeletedMessages() const {
|
||||
|
||||
if (query_read_msg.exec()) {
|
||||
while (query_read_msg.next()) {
|
||||
Message message;
|
||||
bool decoded;
|
||||
Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded);
|
||||
|
||||
message.m_feedId = query_read_msg.value(7).toString();
|
||||
message.m_title = query_read_msg.value(0).toString();
|
||||
message.m_url = query_read_msg.value(1).toString();
|
||||
message.m_author = query_read_msg.value(2).toString();
|
||||
message.m_created = TextFactory::parseDateTime(query_read_msg.value(3).value<qint64>());
|
||||
message.m_contents = query_read_msg.value(4).toString();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(query_read_msg.value(5).toString());
|
||||
message.m_accountId = account_id;
|
||||
message.m_customId = query_read_msg.value(6).toString();
|
||||
message.m_id = query_read_msg.value(7).toInt();
|
||||
if (decoded) {
|
||||
messages.append(message);
|
||||
}
|
||||
|
||||
messages.append(message);
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ QList<Message> ServiceRoot::undeletedMessages() const {
|
||||
QSqlQuery query_read_msg(database);
|
||||
|
||||
query_read_msg.setForwardOnly(true);
|
||||
query_read_msg.prepare("SELECT title, url, author, date_created, contents, enclosures, custom_id, id, feed "
|
||||
query_read_msg.prepare("SELECT * "
|
||||
"FROM Messages "
|
||||
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND account_id = :account_id;");
|
||||
query_read_msg.bindValue(QSL(":account_id"), account_id);
|
||||
@ -76,22 +76,12 @@ QList<Message> ServiceRoot::undeletedMessages() const {
|
||||
|
||||
if (query_read_msg.exec()) {
|
||||
while (query_read_msg.next()) {
|
||||
Message message;
|
||||
bool decoded;
|
||||
Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded);
|
||||
|
||||
// TODO: napsat funkci static Message Message::fromSqlRecord(const QSqlRecord &record)
|
||||
// ta prostě bude brat record z SELECT * FROM Messages WHERE ....;
|
||||
// a vrati ho jako objekt Message;
|
||||
|
||||
message.m_feedId = query_read_msg.value(7).toString();
|
||||
message.m_title = query_read_msg.value(0).toString();
|
||||
message.m_url = query_read_msg.value(1).toString();
|
||||
message.m_author = query_read_msg.value(2).toString();
|
||||
message.m_created = TextFactory::parseDateTime(query_read_msg.value(3).value<qint64>());
|
||||
message.m_contents = query_read_msg.value(4).toString();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(query_read_msg.value(5).toString());
|
||||
message.m_accountId = account_id;
|
||||
message.m_customId = query_read_msg.value(6).toString();
|
||||
message.m_id = query_read_msg.value(7).toInt();
|
||||
if (decoded) {
|
||||
messages.append(message);
|
||||
}
|
||||
|
||||
messages.append(message);
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ QList<Message> StandardFeed::undeletedMessages() const {
|
||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
||||
QSqlQuery query_read_msg(database);
|
||||
query_read_msg.setForwardOnly(true);
|
||||
query_read_msg.prepare("SELECT title, url, author, date_created, contents, enclosures, id "
|
||||
query_read_msg.prepare("SELECT * "
|
||||
"FROM Messages "
|
||||
"WHERE is_deleted = 0 AND feed = :feed AND account_id = :account_id;");
|
||||
|
||||
@ -146,17 +146,12 @@ QList<Message> StandardFeed::undeletedMessages() const {
|
||||
|
||||
if (query_read_msg.exec()) {
|
||||
while (query_read_msg.next()) {
|
||||
Message message;
|
||||
bool decoded;
|
||||
Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded);
|
||||
|
||||
message.m_feedId = id();
|
||||
message.m_title = query_read_msg.value(0).toString();
|
||||
message.m_url = query_read_msg.value(1).toString();
|
||||
message.m_author = query_read_msg.value(2).toString();
|
||||
message.m_created = TextFactory::parseDateTime(query_read_msg.value(3).value<qint64>());
|
||||
message.m_contents = query_read_msg.value(4).toString();
|
||||
message.m_accountId = const_cast<StandardFeed*>(this)->serviceRoot()->accountId();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(query_read_msg.value(5).toString());
|
||||
message.m_id = query_read_msg.value(6).toInt();
|
||||
if (decoded) {
|
||||
messages.append(message);
|
||||
}
|
||||
|
||||
messages.append(message);
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ QList<Message> TtRssFeed::undeletedMessages() const {
|
||||
QSqlQuery query_read_msg(database);
|
||||
|
||||
query_read_msg.setForwardOnly(true);
|
||||
query_read_msg.prepare("SELECT title, url, author, date_created, contents, enclosures, custom_id, id "
|
||||
query_read_msg.prepare("SELECT * "
|
||||
"FROM Messages "
|
||||
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND feed = :feed AND account_id = :account_id;");
|
||||
|
||||
@ -129,18 +129,12 @@ QList<Message> TtRssFeed::undeletedMessages() const {
|
||||
|
||||
if (query_read_msg.exec()) {
|
||||
while (query_read_msg.next()) {
|
||||
Message message;
|
||||
bool decoded;
|
||||
Message message = Message::fromSqlRecord(query_read_msg.record(), &decoded);
|
||||
|
||||
message.m_feedId = QString::number(customId());
|
||||
message.m_title = query_read_msg.value(0).toString();
|
||||
message.m_url = query_read_msg.value(1).toString();
|
||||
message.m_author = query_read_msg.value(2).toString();
|
||||
message.m_created = TextFactory::parseDateTime(query_read_msg.value(3).value<qint64>());
|
||||
message.m_contents = query_read_msg.value(4).toString();
|
||||
message.m_enclosures = Enclosures::decodeEnclosuresFromString(query_read_msg.value(5).toString());
|
||||
message.m_accountId = account_id;
|
||||
message.m_customId = query_read_msg.value(6).toString();
|
||||
message.m_id = query_read_msg.value(7).toInt();
|
||||
if (decoded) {
|
||||
messages.append(message);
|
||||
}
|
||||
|
||||
messages.append(message);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user