try to use sql to display label names
This commit is contained in:
parent
d866378dfd
commit
4c238d2e05
@ -12,7 +12,7 @@ MessagesModelSqlLayer::MessagesModelSqlLayer()
|
|||||||
m_db = qApp->database()->driver()->connection(QSL("MessagesModel"));
|
m_db = qApp->database()->driver()->connection(QSL("MessagesModel"));
|
||||||
|
|
||||||
// Used in <x>: SELECT <x1>, <x2> FROM ....;
|
// Used in <x>: SELECT <x1>, <x2> FROM ....;
|
||||||
m_fieldNames = DatabaseQueries::messageTableAttributes(false);
|
m_fieldNames = DatabaseQueries::messageTableAttributes(false, m_db.driverName() == QSL(APP_DB_SQLITE_DRIVER));
|
||||||
|
|
||||||
// Used in <x>: SELECT ... FROM ... ORDER BY <x1> DESC, <x2> ASC;
|
// Used in <x>: SELECT ... FROM ... ORDER BY <x1> DESC, <x2> ASC;
|
||||||
m_orderByNames[MSG_DB_ID_INDEX] = QSL("Messages.id");
|
m_orderByNames[MSG_DB_ID_INDEX] = QSL("Messages.id");
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
QMap<int, QString> DatabaseQueries::messageTableAttributes(bool only_msg_table) {
|
QMap<int, QString> DatabaseQueries::messageTableAttributes(bool only_msg_table, bool is_sqlite) {
|
||||||
QMap<int, QString> field_names;
|
QMap<int, QString> field_names;
|
||||||
|
|
||||||
field_names[MSG_DB_ID_INDEX] = QSL("Messages.id");
|
field_names[MSG_DB_ID_INDEX] = QSL("Messages.id");
|
||||||
@ -38,7 +38,17 @@ QMap<int, QString> DatabaseQueries::messageTableAttributes(bool only_msg_table)
|
|||||||
"ELSE 'false' "
|
"ELSE 'false' "
|
||||||
"END AS has_enclosures");
|
"END AS has_enclosures");
|
||||||
|
|
||||||
field_names[MSG_DB_LABELS] = QSL("1 as msg_labels");
|
if (is_sqlite) {
|
||||||
|
field_names[MSG_DB_LABELS] =
|
||||||
|
QSL("(SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE \"%.\" || "
|
||||||
|
"Labels.custom_id || \".%\") as msg_labels");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
field_names[MSG_DB_LABELS] =
|
||||||
|
QSL("(SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE CONCAT(\"%.\", "
|
||||||
|
"Labels.custom_id, \".%\")) as msg_labels");
|
||||||
|
}
|
||||||
|
|
||||||
field_names[MSG_DB_LABELS_IDS] = QSL("Messages.labels");
|
field_names[MSG_DB_LABELS_IDS] = QSL("Messages.labels");
|
||||||
|
|
||||||
// TODO: zpomaluje zobrazení seznamu zpráv
|
// TODO: zpomaluje zobrazení seznamu zpráv
|
||||||
@ -877,7 +887,9 @@ QList<Message> DatabaseQueries::getUndeletedMessagesWithLabel(const QSqlDatabase
|
|||||||
" Messages.is_pdeleted = 0 AND "
|
" Messages.is_pdeleted = 0 AND "
|
||||||
" Messages.account_id = :account_id AND "
|
" Messages.account_id = :account_id AND "
|
||||||
" Messages.labels LIKE :label;")
|
" Messages.labels LIKE :label;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), label->getParentServiceRoot()->accountId());
|
q.bindValue(QSL(":account_id"), label->getParentServiceRoot()->accountId());
|
||||||
q.bindValue(QSL(":label"), QSL("%.%1.%").arg(label->customId()));
|
q.bindValue(QSL(":label"), QSL("%.%1.%").arg(label->customId()));
|
||||||
|
|
||||||
@ -917,7 +929,9 @@ QList<Message> DatabaseQueries::getUndeletedLabelledMessages(const QSqlDatabase&
|
|||||||
" Messages.is_pdeleted = 0 AND "
|
" Messages.is_pdeleted = 0 AND "
|
||||||
" Messages.account_id = :account_id AND "
|
" Messages.account_id = :account_id AND "
|
||||||
" LENGTH(Messages.labels) > 2;")
|
" LENGTH(Messages.labels) > 2;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
if (q.exec()) {
|
if (q.exec()) {
|
||||||
@ -954,7 +968,9 @@ QList<Message> DatabaseQueries::getUndeletedImportantMessages(const QSqlDatabase
|
|||||||
"FROM Messages "
|
"FROM Messages "
|
||||||
"WHERE is_important = 1 AND is_deleted = 0 AND "
|
"WHERE is_important = 1 AND is_deleted = 0 AND "
|
||||||
" is_pdeleted = 0 AND account_id = :account_id;")
|
" is_pdeleted = 0 AND account_id = :account_id;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
if (q.exec()) {
|
if (q.exec()) {
|
||||||
@ -989,7 +1005,9 @@ QList<Message> DatabaseQueries::getUndeletedUnreadMessages(const QSqlDatabase& d
|
|||||||
"FROM Messages "
|
"FROM Messages "
|
||||||
"WHERE is_read = 0 AND is_deleted = 0 AND "
|
"WHERE is_read = 0 AND is_deleted = 0 AND "
|
||||||
" is_pdeleted = 0 AND account_id = :account_id;")
|
" is_pdeleted = 0 AND account_id = :account_id;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
if (q.exec()) {
|
if (q.exec()) {
|
||||||
@ -1027,7 +1045,9 @@ QList<Message> DatabaseQueries::getUndeletedMessagesForFeed(const QSqlDatabase&
|
|||||||
"FROM Messages "
|
"FROM Messages "
|
||||||
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND "
|
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND "
|
||||||
" feed = :feed AND account_id = :account_id;")
|
" feed = :feed AND account_id = :account_id;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":feed"), feed_custom_id);
|
q.bindValue(QSL(":feed"), feed_custom_id);
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
@ -1062,7 +1082,9 @@ QList<Message> DatabaseQueries::getUndeletedMessagesForBin(const QSqlDatabase& d
|
|||||||
q.prepare(QSL("SELECT %1 "
|
q.prepare(QSL("SELECT %1 "
|
||||||
"FROM Messages "
|
"FROM Messages "
|
||||||
"WHERE is_deleted = 1 AND is_pdeleted = 0 AND account_id = :account_id;")
|
"WHERE is_deleted = 1 AND is_pdeleted = 0 AND account_id = :account_id;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
if (q.exec()) {
|
if (q.exec()) {
|
||||||
@ -1096,7 +1118,9 @@ QList<Message> DatabaseQueries::getUndeletedMessagesForAccount(const QSqlDatabas
|
|||||||
q.prepare(QSL("SELECT %1 "
|
q.prepare(QSL("SELECT %1 "
|
||||||
"FROM Messages "
|
"FROM Messages "
|
||||||
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND account_id = :account_id;")
|
"WHERE is_deleted = 0 AND is_pdeleted = 0 AND account_id = :account_id;")
|
||||||
.arg(messageTableAttributes(true).values().join(QSL(", "))));
|
.arg(messageTableAttributes(true, db.driverName() == QSL(APP_DB_SQLITE_DRIVER))
|
||||||
|
.values()
|
||||||
|
.join(QSL(", "))));
|
||||||
q.bindValue(QSL(":account_id"), account_id);
|
q.bindValue(QSL(":account_id"), account_id);
|
||||||
|
|
||||||
if (q.exec()) {
|
if (q.exec()) {
|
||||||
|
@ -27,7 +27,7 @@ struct ArticleCounts {
|
|||||||
|
|
||||||
class DatabaseQueries {
|
class DatabaseQueries {
|
||||||
public:
|
public:
|
||||||
static QMap<int, QString> messageTableAttributes(bool only_msg_table);
|
static QMap<int, QString> messageTableAttributes(bool only_msg_table, bool is_sqlite);
|
||||||
|
|
||||||
// Custom data serializers.
|
// Custom data serializers.
|
||||||
static QString serializeCustomData(const QVariantHash& data);
|
static QString serializeCustomData(const QVariantHash& data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user