From dba66762993507168b1a3de25cfd2d7bff0ff969 Mon Sep 17 00:00:00 2001 From: Janne Koschinski Date: Fri, 1 Sep 2017 01:11:50 +0200 Subject: [PATCH] Implement sender prefix storage in the database * When processing a new message, find the mode the user that sent this message has in a channel (for example o or hv) * Convert it to a prefix (for example @ or +%) * Store this in a new sendermode column in the backlog table Schema for both SQLite and PostgreSQL is updated. --- src/common/message.cpp | 7 +++-- src/common/message.h | 6 ++-- src/common/network.h | 27 ++++++++++++++++++ src/core/SQL/PostgreSQL/insert_message.sql | 4 +-- .../SQL/PostgreSQL/migrate_write_backlog.sql | 4 +-- .../SQL/PostgreSQL/select_messagesAll.sql | 2 +- .../SQL/PostgreSQL/select_messagesAllNew.sql | 2 +- .../PostgreSQL/select_messagesNewerThan.sql | 2 +- .../SQL/PostgreSQL/select_messagesNewestK.sql | 2 +- .../SQL/PostgreSQL/select_messagesRange.sql | 2 +- src/core/SQL/PostgreSQL/setup_060_backlog.sql | 1 + .../version/23/upgrade_000_create_mode.sql | 2 ++ src/core/SQL/SQLite/insert_message.sql | 4 +-- src/core/SQL/SQLite/migrate_read_backlog.sql | 2 +- src/core/SQL/SQLite/select_messagesAll.sql | 2 +- src/core/SQL/SQLite/select_messagesAllNew.sql | 2 +- .../SQL/SQLite/select_messagesNewerThan.sql | 2 +- .../SQL/SQLite/select_messagesNewestK.sql | 2 +- src/core/SQL/SQLite/select_messagesRange.sql | 2 +- src/core/SQL/SQLite/setup_060_backlog.sql | 1 + .../version/24/upgrade_000_create_mode.sql | 2 ++ src/core/abstractsqlstorage.h | 1 + src/core/coresession.cpp | 28 +++++++++++++++++-- src/core/coresession.h | 7 +++++ src/core/postgresqlstorage.cpp | 11 ++++++-- src/core/sql.qrc | 2 ++ src/core/sqlitestorage.cpp | 11 ++++++-- 27 files changed, 110 insertions(+), 30 deletions(-) create mode 100644 src/core/SQL/PostgreSQL/version/23/upgrade_000_create_mode.sql create mode 100644 src/core/SQL/SQLite/version/24/upgrade_000_create_mode.sql diff --git a/src/common/message.cpp b/src/common/message.cpp index dfa6bffe..cd501585 100644 --- a/src/common/message.cpp +++ b/src/common/message.cpp @@ -24,22 +24,24 @@ #include -Message::Message(const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, Flags flags) +Message::Message(const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, const QString &senderPrefixes, Flags flags) : _timestamp(QDateTime::currentDateTime().toUTC()), _bufferInfo(bufferInfo), _contents(contents), _sender(sender), + _senderPrefixes(senderPrefixes), _type(type), _flags(flags) { } -Message::Message(const QDateTime &ts, const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, Flags flags) +Message::Message(const QDateTime &ts, const BufferInfo &bufferInfo, Type type, const QString &contents, const QString &sender, const QString &senderPrefixes, Flags flags) : _timestamp(ts), _bufferInfo(bufferInfo), _contents(contents), _sender(sender), + _senderPrefixes(senderPrefixes), _type(type), _flags(flags) { @@ -67,6 +69,7 @@ QDataStream &operator>>(QDataStream &in, Message &msg) msg._bufferInfo = buf; msg._timestamp = QDateTime::fromTime_t(ts); msg._sender = QString::fromUtf8(s); + msg._senderPrefixes = QString(""); msg._contents = QString::fromUtf8(m); return in; } diff --git a/src/common/message.h b/src/common/message.h index c20ce976..d61a8a72 100644 --- a/src/common/message.h +++ b/src/common/message.h @@ -66,9 +66,9 @@ public: }; Q_DECLARE_FLAGS(Flags, Flag) - Message(const BufferInfo &bufferInfo = BufferInfo(), Type type = Plain, const QString &contents = "", const QString &sender = "", Flags flags = None); + Message(const BufferInfo &bufferInfo = BufferInfo(), Type type = Plain, const QString &contents = "", const QString &sender = "", const QString &senderPrefixes = "", Flags flags = None); Message(const QDateTime &ts, const BufferInfo &buffer = BufferInfo(), Type type = Plain, - const QString &contents = "", const QString &sender = "", Flags flags = None); + const QString &contents = "", const QString &sender = "", const QString &senderPrefixes = "", Flags flags = None); inline static Message ChangeOfDay(const QDateTime &day) { return Message(day, BufferInfo(), DayChange); } inline const MsgId &msgId() const { return _msgId; } @@ -79,6 +79,7 @@ public: inline void setBufferId(BufferId id) { _bufferInfo.setBufferId(id); } inline const QString &contents() const { return _contents; } inline const QString &sender() const { return _sender; } + inline const QString &senderPrefixes() const { return _senderPrefixes; } inline Type type() const { return _type; } inline Flags flags() const { return _flags; } inline void setFlags(Flags flags) { _flags = flags; } @@ -94,6 +95,7 @@ private: BufferInfo _bufferInfo; QString _contents; QString _sender; + QString _senderPrefixes; Type _type; Flags _flags; diff --git a/src/common/network.h b/src/common/network.h index 5ad42e9f..addb1d5f 100644 --- a/src/common/network.h +++ b/src/common/network.h @@ -172,10 +172,37 @@ public : //Network::ConnectionState connectionState() const; inline int connectionState() const { return _connectionState; } + /**@{*/ + /** + * Translates a user’s prefix to the channelmode associated with it. + * @param prefix Prefix to be translated. + */ QString prefixToMode(const QString &prefix) const; inline QString prefixToMode(const QCharRef &prefix) const { return prefixToMode(QString(prefix)); } + inline QString prefixesToModes(const QString &prefix) const { + QString mode = ""; + for (QChar c : prefix) { + mode += prefixToMode(c); + } + return mode; + } + /**@}*/ + + /**@{*/ + /** + * Translates a user’s prefix to the channelmode associated with it. + * @param prefix Prefix to be translated. + */ QString modeToPrefix(const QString &mode) const; inline QString modeToPrefix(const QCharRef &mode) const { return modeToPrefix(QString(mode)); } + inline QString modesToPrefixes(const QString &mode) const { + QString prefix = ""; + for (QChar c : mode) { + prefix += modeToPrefix(c); + } + return prefix; + } + /**@}*/ ChannelModeType channelModeType(const QString &mode); inline ChannelModeType channelModeType(const QCharRef &mode) { return channelModeType(QString(mode)); } diff --git a/src/core/SQL/PostgreSQL/insert_message.sql b/src/core/SQL/PostgreSQL/insert_message.sql index 2013acb8..867942c7 100644 --- a/src/core/SQL/PostgreSQL/insert_message.sql +++ b/src/core/SQL/PostgreSQL/insert_message.sql @@ -1,3 +1,3 @@ -INSERT INTO backlog (time, bufferid, type, flags, senderid, message) -VALUES ($1, $2, $3, $4, $5, $6) +INSERT INTO backlog (time, bufferid, type, flags, senderid, senderprefixes, message) +VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING messageid diff --git a/src/core/SQL/PostgreSQL/migrate_write_backlog.sql b/src/core/SQL/PostgreSQL/migrate_write_backlog.sql index a6035221..c2d2a754 100644 --- a/src/core/SQL/PostgreSQL/migrate_write_backlog.sql +++ b/src/core/SQL/PostgreSQL/migrate_write_backlog.sql @@ -1,2 +1,2 @@ -INSERT INTO backlog (messageid, time, bufferid, type, flags, senderid, message) -VALUES (?, ?, ?, ?, ?, ?, ?) +INSERT INTO backlog (messageid, time, bufferid, type, flags, senderid, senderprefixes, message) +VALUES (?, ?, ?, ?, ?, ?, ?, ?) diff --git a/src/core/SQL/PostgreSQL/select_messagesAll.sql b/src/core/SQL/PostgreSQL/select_messagesAll.sql index 10009c30..0ee372ab 100644 --- a/src/core/SQL/PostgreSQL/select_messagesAll.sql +++ b/src/core/SQL/PostgreSQL/select_messagesAll.sql @@ -1,4 +1,4 @@ -SELECT messageid, bufferid, time, type, flags, sender, message +SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid) diff --git a/src/core/SQL/PostgreSQL/select_messagesAllNew.sql b/src/core/SQL/PostgreSQL/select_messagesAllNew.sql index b810f0d9..9f815452 100644 --- a/src/core/SQL/PostgreSQL/select_messagesAllNew.sql +++ b/src/core/SQL/PostgreSQL/select_messagesAllNew.sql @@ -1,4 +1,4 @@ -SELECT messageid, bufferid, time, type, flags, sender, message +SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid) diff --git a/src/core/SQL/PostgreSQL/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/select_messagesNewerThan.sql index 571f5383..621fd0a4 100644 --- a/src/core/SQL/PostgreSQL/select_messagesNewerThan.sql +++ b/src/core/SQL/PostgreSQL/select_messagesNewerThan.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.messageid >= $1 diff --git a/src/core/SQL/PostgreSQL/select_messagesNewestK.sql b/src/core/SQL/PostgreSQL/select_messagesNewestK.sql index 50be2e31..e7059287 100644 --- a/src/core/SQL/PostgreSQL/select_messagesNewestK.sql +++ b/src/core/SQL/PostgreSQL/select_messagesNewestK.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE bufferid = $1 diff --git a/src/core/SQL/PostgreSQL/select_messagesRange.sql b/src/core/SQL/PostgreSQL/select_messagesRange.sql index b7af9091..a95c23c0 100644 --- a/src/core/SQL/PostgreSQL/select_messagesRange.sql +++ b/src/core/SQL/PostgreSQL/select_messagesRange.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.messageid >= $1 diff --git a/src/core/SQL/PostgreSQL/setup_060_backlog.sql b/src/core/SQL/PostgreSQL/setup_060_backlog.sql index 0523fcd6..1711b231 100644 --- a/src/core/SQL/PostgreSQL/setup_060_backlog.sql +++ b/src/core/SQL/PostgreSQL/setup_060_backlog.sql @@ -5,5 +5,6 @@ CREATE TABLE backlog ( type integer NOT NULL, flags integer NOT NULL, senderid integer NOT NULL REFERENCES sender (senderid) ON DELETE SET NULL, + senderprefixes TEXT, message TEXT ) diff --git a/src/core/SQL/PostgreSQL/version/23/upgrade_000_create_mode.sql b/src/core/SQL/PostgreSQL/version/23/upgrade_000_create_mode.sql new file mode 100644 index 00000000..ad507ccb --- /dev/null +++ b/src/core/SQL/PostgreSQL/version/23/upgrade_000_create_mode.sql @@ -0,0 +1,2 @@ +ALTER TABLE backlog +ADD COLUMN senderprefixes TEXT; diff --git a/src/core/SQL/SQLite/insert_message.sql b/src/core/SQL/SQLite/insert_message.sql index 20facb8a..0a912998 100644 --- a/src/core/SQL/SQLite/insert_message.sql +++ b/src/core/SQL/SQLite/insert_message.sql @@ -1,2 +1,2 @@ -INSERT INTO backlog (time, bufferid, type, flags, senderid, message) -VALUES (:time, :bufferid, :type, :flags, (SELECT senderid FROM sender WHERE sender = :sender), :message) +INSERT INTO backlog (time, bufferid, type, flags, senderid, senderprefixes, message) +VALUES (:time, :bufferid, :type, :flags, (SELECT senderid FROM sender WHERE sender = :sender), :senderprefixes, :message) diff --git a/src/core/SQL/SQLite/migrate_read_backlog.sql b/src/core/SQL/SQLite/migrate_read_backlog.sql index 6c0f2995..8d53b175 100644 --- a/src/core/SQL/SQLite/migrate_read_backlog.sql +++ b/src/core/SQL/SQLite/migrate_read_backlog.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, bufferid, type, flags, senderid, message +SELECT messageid, time, bufferid, type, flags, senderid, senderprefixes, message FROM backlog WHERE messageid > ? AND messageid <= ? ORDER BY messageid ASC diff --git a/src/core/SQL/SQLite/select_messagesAll.sql b/src/core/SQL/SQLite/select_messagesAll.sql index 52285aff..2fb1cdb7 100644 --- a/src/core/SQL/SQLite/select_messagesAll.sql +++ b/src/core/SQL/SQLite/select_messagesAll.sql @@ -1,4 +1,4 @@ -SELECT messageid, bufferid, time, type, flags, sender, message +SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid) diff --git a/src/core/SQL/SQLite/select_messagesAllNew.sql b/src/core/SQL/SQLite/select_messagesAllNew.sql index a29f094b..f6a54718 100644 --- a/src/core/SQL/SQLite/select_messagesAllNew.sql +++ b/src/core/SQL/SQLite/select_messagesAllNew.sql @@ -1,4 +1,4 @@ -SELECT messageid, bufferid, time, type, flags, sender, message +SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid) diff --git a/src/core/SQL/SQLite/select_messagesNewerThan.sql b/src/core/SQL/SQLite/select_messagesNewerThan.sql index bac2a047..8129c445 100644 --- a/src/core/SQL/SQLite/select_messagesNewerThan.sql +++ b/src/core/SQL/SQLite/select_messagesNewerThan.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.messageid >= :firstmsg diff --git a/src/core/SQL/SQLite/select_messagesNewestK.sql b/src/core/SQL/SQLite/select_messagesNewestK.sql index 6f86e70b..18105db4 100644 --- a/src/core/SQL/SQLite/select_messagesNewestK.sql +++ b/src/core/SQL/SQLite/select_messagesNewestK.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE bufferid = :bufferid diff --git a/src/core/SQL/SQLite/select_messagesRange.sql b/src/core/SQL/SQLite/select_messagesRange.sql index 641179f2..dc6e6179 100644 --- a/src/core/SQL/SQLite/select_messagesRange.sql +++ b/src/core/SQL/SQLite/select_messagesRange.sql @@ -1,4 +1,4 @@ -SELECT messageid, time, type, flags, sender, message +SELECT messageid, time, type, flags, sender, senderprefixes, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE bufferid = :bufferid diff --git a/src/core/SQL/SQLite/setup_060_backlog.sql b/src/core/SQL/SQLite/setup_060_backlog.sql index d3e191d0..59329e1f 100644 --- a/src/core/SQL/SQLite/setup_060_backlog.sql +++ b/src/core/SQL/SQLite/setup_060_backlog.sql @@ -5,4 +5,5 @@ CREATE TABLE backlog ( type INTEGER NOT NULL, flags INTEGER NOT NULL, senderid INTEGER NOT NULL, + senderprefixes TEXT, message TEXT) diff --git a/src/core/SQL/SQLite/version/24/upgrade_000_create_mode.sql b/src/core/SQL/SQLite/version/24/upgrade_000_create_mode.sql new file mode 100644 index 00000000..ad507ccb --- /dev/null +++ b/src/core/SQL/SQLite/version/24/upgrade_000_create_mode.sql @@ -0,0 +1,2 @@ +ALTER TABLE backlog +ADD COLUMN senderprefixes TEXT; diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index 8a58be9a..91950cc9 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -244,6 +244,7 @@ public: int type; int flags; int senderid; + QString senderprefixes; QString message; }; diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 2ca9627c..8c012acc 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -366,7 +366,8 @@ void CoreSession::processMessages() Q_ASSERT(!createBuffer); bufferInfo = Core::bufferInfo(user(), rawMsg.networkId, BufferInfo::StatusBuffer, ""); } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); if(Core::storeMessage(msg)) emit displayMsg(msg); } @@ -390,7 +391,8 @@ void CoreSession::processMessages() } bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); messages << msg; } @@ -406,7 +408,8 @@ void CoreSession::processMessages() // add the StatusBuffer to the Cache in case there are more Messages for the original target bufferInfoCache[rawMsg.networkId][rawMsg.target] = bufferInfo; } - Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, rawMsg.flags); + Message msg(bufferInfo, rawMsg.type, rawMsg.text, rawMsg.sender, + senderPrefixes(rawMsg.sender, bufferInfo), rawMsg.flags); messages << msg; } @@ -421,6 +424,25 @@ void CoreSession::processMessages() _messageQueue.clear(); } +QString CoreSession::senderPrefixes(const QString &sender, const BufferInfo &bufferInfo) const +{ + CoreNetwork *currentNetwork = network(bufferInfo.networkId()); + if (!currentNetwork) { + return ""; + } + + if (bufferInfo.type() != BufferInfo::ChannelBuffer) { + return ""; + } + + IrcChannel *currentChannel = currentNetwork->ircChannel(bufferInfo.bufferName()); + if (!currentChannel) { + return ""; + } + + const QString modes = currentChannel->userModes(nickFromMask(sender).toLower()); + return currentNetwork->modesToPrefixes(modes); +} Protocol::SessionState CoreSession::sessionState() const { diff --git a/src/core/coresession.h b/src/core/coresession.h index 849575fe..d7b2cebb 100644 --- a/src/core/coresession.h +++ b/src/core/coresession.h @@ -224,6 +224,13 @@ private: QScriptEngine *scriptEngine; + /** + * This method obtains the prefixes of the message's sender within a channel, by looking up their channelmodes, and + * processing them to prefixes based on the network's settings. + * @param sender The hostmask of the sender + * @param bufferInfo The BufferInfo object of the buffer + */ + QString senderPrefixes(const QString &sender, const BufferInfo &bufferInfo) const; QList _messageQueue; bool _processMessages; CoreIgnoreListManager _ignoreListManager; diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index ac6dec93..db8387f3 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1425,6 +1425,7 @@ bool PostgreSqlStorage::logMessage(Message &msg) << msg.type() << (int)msg.flags() << senderId + << msg.senderPrefixes() << msg.contents(); QSqlQuery logMessageQuery = executePreparedQuery("insert_message", params, db); @@ -1502,6 +1503,7 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs) << msg.type() << (int)msg.flags() << senderIdList.at(i) + << msg.senderPrefixes() << msg.contents(); QSqlQuery logMessageQuery = executePreparedQuery("insert_message", params, db); if (!watchQuery(logMessageQuery)) { @@ -1580,8 +1582,9 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms Message msg(timestamp, bufferInfo, (Message::Type)query.value(2).toUInt(), - query.value(5).toString(), + query.value(6).toString(), query.value(4).toString(), + query.value(5).toString(), (Message::Flags)query.value(3).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1632,8 +1635,9 @@ QList PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId Message msg(timestamp, bufferInfoHash[query.value(1).toInt()], (Message::Type)query.value(3).toUInt(), - query.value(6).toString(), + query.value(7).toString(), query.value(5).toString(), + query.value(6).toString(), (Message::Flags)query.value(4).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1989,7 +1993,8 @@ bool PostgreSqlMigrationWriter::writeMo(const BacklogMO &backlog) bindValue(3, backlog.type); bindValue(4, (int)backlog.flags); bindValue(5, backlog.senderid); - bindValue(6, backlog.message); + bindValue(6, backlog.senderprefixes); + bindValue(7, backlog.message); return exec(); } diff --git a/src/core/sql.qrc b/src/core/sql.qrc index f945690b..1eee7d0d 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -104,6 +104,7 @@ ./SQL/PostgreSQL/version/21/upgrade_000_add_function_backlog_lastmsgid_update.sql ./SQL/PostgreSQL/version/21/upgrade_001_add_trigger_backlog_lastmsgid_update.sql ./SQL/PostgreSQL/version/22/upgrade_000_alter_quasseluser_add_authenticator.sql + ./SQL/PostgreSQL/version/23/upgrade_000_create_mode.sql ./SQL/SQLite/delete_backlog_by_uid.sql ./SQL/SQLite/delete_backlog_for_buffer.sql ./SQL/SQLite/delete_backlog_for_network.sql @@ -281,5 +282,6 @@ ./SQL/SQLite/version/22/upgrade_000_add_trigger_backlog_lastmsgid_update_direct_insert.sql ./SQL/SQLite/version/22/upgrade_001_add_trigger_backlog_lastmsgid_update_direct_update.sql ./SQL/SQLite/version/23/upgrade_000_alter_quasseluser_add_authenticator.sql + ./SQL/SQLite/version/24/upgrade_000_create_mode.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index c14d7cb7..9fcd2b95 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1518,6 +1518,7 @@ bool SqliteStorage::logMessage(Message &msg) logMessageQuery.bindValue(":type", msg.type()); logMessageQuery.bindValue(":flags", (int)msg.flags()); logMessageQuery.bindValue(":sender", msg.sender()); + logMessageQuery.bindValue(":senderprefixes", msg.senderPrefixes()); logMessageQuery.bindValue(":message", msg.contents()); lockForWrite(); @@ -1593,6 +1594,7 @@ bool SqliteStorage::logMessages(MessageList &msgs) logMessageQuery.bindValue(":type", msg.type()); logMessageQuery.bindValue(":flags", (int)msg.flags()); logMessageQuery.bindValue(":sender", msg.sender()); + logMessageQuery.bindValue(":senderprefixes", msg.senderPrefixes()); logMessageQuery.bindValue(":message", msg.contents()); safeExec(logMessageQuery); @@ -1677,8 +1679,9 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId Message msg(QDateTime::fromTime_t(query.value(1).toInt()), bufferInfo, (Message::Type)query.value(2).toUInt(), - query.value(5).toString(), + query.value(6).toString(), query.value(4).toString(), + query.value(5).toString(), (Message::Flags)query.value(3).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1731,8 +1734,9 @@ QList SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las Message msg(QDateTime::fromTime_t(query.value(2).toInt()), bufferInfoHash[query.value(1).toInt()], (Message::Type)query.value(3).toUInt(), - query.value(6).toString(), + query.value(7).toString(), query.value(5).toString(), + query.value(6).toString(), (Message::Flags)query.value(4).toUInt()); msg.setMsgId(query.value(0).toInt()); messagelist << msg; @@ -1999,7 +2003,8 @@ bool SqliteMigrationReader::readMo(BacklogMO &backlog) backlog.type = value(3).toInt(); backlog.flags = value(4).toInt(); backlog.senderid = value(5).toInt(); - backlog.message = value(6).toString(); + backlog.senderprefixes = value(6).toString(); + backlog.message = value(7).toString(); return true; } -- 2.20.1