Add lastmsgid limit on fetching backlog to SQLite
[quassel.git] / src / core / sqlitestorage.cpp
index 53601e0..99e97b5 100644 (file)
@@ -1475,6 +1475,16 @@ QHash<BufferId, MsgId> SqliteStorage::bufferMarkerLineMsgIds(UserId user)
     return markerLineHash;
 }
 
+void SqliteStorage::setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId)
+{
+    QSqlQuery query(logDb());
+    query.prepare(queryString("update_buffer_lastmsgid"));
+
+    query.bindValue(":bufferid", bufferId.toInt());
+    query.bindValue(":lastmsgid", msgId.toInt());
+    safeExec(query);
+    watchQuery(query);
+}
 
 bool SqliteStorage::logMessage(Message &msg)
 {
@@ -1514,6 +1524,8 @@ bool SqliteStorage::logMessage(Message &msg)
             MsgId msgId = logMessageQuery.lastInsertId().toInt();
             if (msgId.isValid()) {
                 msg.setMsgId(msgId);
+
+                setBufferLastMsg(msg.bufferInfo().bufferId(), msgId);
             }
             else {
                 error = true;
@@ -1636,7 +1648,7 @@ QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId
             query.bindValue(":firstmsg", first.toInt());
         }
         else {
-            query.prepare(queryString("select_messages"));
+            query.prepare(queryString("select_messagesRange"));
             query.bindValue(":lastmsg", last.toInt());
             query.bindValue(":firstmsg", first.toInt());
         }