X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=71d0ea84f19e9d5dfb5fc49c32989d1e2e5be020;hp=f495acdf82baba66f95b3082c8a52dc5bdf32827;hb=e0464aa399c32231e5cc7879f8910c3ccd3b45e3;hpb=4bb7c6540eb44dc47b2b93051a46c5bdc9a7f5ba diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index f495acdf..71d0ea84 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -811,6 +811,67 @@ QList SqliteStorage::requestMsgRange(UserId user, BufferId bufferId, in return messagelist; } +QList SqliteStorage::requestNewMsgs(UserId user, BufferId bufferId, int first, int limit) { + QList messagelist; + + BufferInfo bufferInfo = getBufferInfo(user, bufferId); + if(!bufferInfo.isValid()) + return messagelist; + + QSqlQuery query(logDb()); + query.prepare(queryString("select_messagesNew")); + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":firstmsg", first); + query.bindValue(":limit", limit); + safeExec(query); + + watchQuery(query); + + while(query.next()) { + Message msg(QDateTime::fromTime_t(query.value(1).toInt()), + bufferInfo, + (Message::Type)query.value(2).toUInt(), + query.value(5).toString(), + query.value(4).toString(), + (Message::Flags)query.value(3).toUInt()); + msg.setMsgId(query.value(0).toInt()); + messagelist << msg; + } + + return messagelist; +} + +QList SqliteStorage::requestAllNewMsgs(UserId user, int first, int limit) { + QList messagelist; + + QHash bufferInfoHash; + foreach(BufferInfo bufferInfo, requestBuffers(user)) { + bufferInfoHash[bufferInfo.bufferId()] = bufferInfo; + } + + QSqlQuery query(logDb()); + query.prepare(queryString("select_messagesAllNew")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":firstmsg", first); + query.bindValue(":limit", limit); + safeExec(query); + + watchQuery(query); + + while(query.next()) { + Message msg(QDateTime::fromTime_t(query.value(1).toInt()), + bufferInfoHash[query.value(2).toInt()], + (Message::Type)query.value(3).toUInt(), + query.value(6).toString(), + query.value(5).toString(), + (Message::Flags)query.value(4).toUInt()); + msg.setMsgId(query.value(0).toInt()); + messagelist << msg; + } + + return messagelist; +} + QString SqliteStorage::backlogFile() { return quasselDir().absolutePath() + "/quassel-storage.sqlite"; }