X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=1d732d31760568dc36964c90e391d42c033fe82b;hp=ad610a03907e8aecf9316d9fe2db86ba92a823cc;hb=18cda6df43b5960686256fb6a899a63baebff70d;hpb=91361e82b8cd46e7c4bfc4475e6ecb1d0b268310 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index ad610a03..1d732d31 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1297,6 +1297,52 @@ QHash SqliteStorage::bufferLastSeenMsgIds(UserId user) { return lastSeenHash; } +void SqliteStorage::setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) { + QSqlDatabase db = logDb(); + db.transaction(); + + { + QSqlQuery query(db); + query.prepare(queryString("update_buffer_markerlinemsgid")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":markerlinemsgid", msgId.toInt()); + + lockForWrite(); + safeExec(query); + watchQuery(query); + } + db.commit(); + unlock(); +} + +QHash SqliteStorage::bufferMarkerLineMsgIds(UserId user) { + QHash markerLineHash; + + QSqlDatabase db = logDb(); + db.transaction(); + + bool error = false; + { + QSqlQuery query(db); + query.prepare(queryString("select_buffer_markerlinemsgids")); + query.bindValue(":userid", user.toInt()); + + lockForRead(); + safeExec(query); + error = !watchQuery(query); + if(!error) { + while(query.next()) { + markerLineHash[query.value(0).toInt()] = query.value(1).toInt(); + } + } + } + + db.commit(); + unlock(); + return markerLineHash; +} + bool SqliteStorage::logMessage(Message &msg) { QSqlDatabase db = logDb(); db.transaction(); @@ -1698,6 +1744,7 @@ bool SqliteMigrationReader::readMo(BufferMO &buffer) { buffer.buffercname = value(5).toString(); buffer.buffertype = value(6).toInt(); buffer.lastseenmsgid = value(7).toInt(); + buffer.markerlinemsgid = value(8).toInt(); buffer.key = value(8).toString(); buffer.joined = value(9).toInt() == 1 ? true : false; return true;