X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=2121f79fd4d0794e0caaff4a7a9400e6acd19db6;hp=d4b7d0c39e88f67f8648ce7820e9da968f093d42;hb=52cba0963e0714f4d58296a20d02164b57f9f4ba;hpb=9f9d207ecf28dd5470ecef9d4076a3f447662a20 diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index d4b7d0c3..2121f79f 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -24,6 +24,8 @@ #include "network.h" +#include "util.h" + SqliteStorage::SqliteStorage(QObject *parent) : AbstractSqlStorage(parent) { @@ -612,19 +614,28 @@ MsgId SqliteStorage::logMessage(Message msg) { return msgId; } -QList SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int offset) { +QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, int lastmsgs, int offset) { QList messagelist; - // we have to determine the real offset first - QSqlQuery *offsetQuery = cachedQuery("select_messagesOffset"); - offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt()); - offsetQuery->bindValue(":messageid", offset); - offsetQuery->exec(); - offsetQuery->first(); - offset = offsetQuery->value(0).toInt(); + + BufferInfo bufferInfo = getBufferInfo(user, bufferId); + if(!bufferInfo.isValid()) + return messagelist; + + if(offset == -1) { + offset = 0; + } else { + // we have to determine the real offset first + QSqlQuery *offsetQuery = cachedQuery("select_messagesOffset"); + offsetQuery->bindValue(":bufferid", bufferId.toInt()); + offsetQuery->bindValue(":messageid", offset); + offsetQuery->exec(); + offsetQuery->first(); + offset = offsetQuery->value(0).toInt(); + } // now let's select the messages QSqlQuery *msgQuery = cachedQuery("select_messages"); - msgQuery->bindValue(":bufferid", buffer.bufferId().toInt()); + msgQuery->bindValue(":bufferid", bufferId.toInt()); msgQuery->bindValue(":limit", lastmsgs); msgQuery->bindValue(":offset", offset); msgQuery->exec(); @@ -633,7 +644,7 @@ QList SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o while(msgQuery->next()) { Message msg(QDateTime::fromTime_t(msgQuery->value(1).toInt()), - buffer, + bufferInfo, (Message::Type)msgQuery->value(2).toUInt(), msgQuery->value(5).toString(), msgQuery->value(4).toString(), @@ -645,11 +656,16 @@ QList SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o } -QList SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, int offset) { +QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, QDateTime since, int offset) { QList messagelist; + + BufferInfo bufferInfo = getBufferInfo(user, bufferId); + if(!bufferInfo.isValid()) + return messagelist; + // we have to determine the real offset first QSqlQuery *offsetQuery = cachedQuery("select_messagesSinceOffset"); - offsetQuery->bindValue(":bufferid", buffer.bufferId().toInt()); + offsetQuery->bindValue(":bufferid", bufferId.toInt()); offsetQuery->bindValue(":since", since.toTime_t()); offsetQuery->exec(); offsetQuery->first(); @@ -657,7 +673,7 @@ QList SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in // now let's select the messages QSqlQuery *msgQuery = cachedQuery("select_messagesSince"); - msgQuery->bindValue(":bufferid", buffer.bufferId().toInt()); + msgQuery->bindValue(":bufferid", bufferId.toInt()); msgQuery->bindValue(":since", since.toTime_t()); msgQuery->bindValue(":offset", offset); msgQuery->exec(); @@ -666,7 +682,7 @@ QList SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in while(msgQuery->next()) { Message msg(QDateTime::fromTime_t(msgQuery->value(1).toInt()), - buffer, + bufferInfo, (Message::Type)msgQuery->value(2).toUInt(), msgQuery->value(5).toString(), msgQuery->value(4).toString(), @@ -679,10 +695,15 @@ QList SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in } -QList SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int last) { +QList SqliteStorage::requestMsgRange(UserId user, BufferId bufferId, int first, int last) { QList messagelist; + + BufferInfo bufferInfo = getBufferInfo(user, bufferId); + if(!bufferInfo.isValid()) + return messagelist; + QSqlQuery *rangeQuery = cachedQuery("select_messageRange"); - rangeQuery->bindValue(":bufferid", buffer.bufferId().toInt()); + rangeQuery->bindValue(":bufferid", bufferId.toInt()); rangeQuery->bindValue(":firstmsg", first); rangeQuery->bindValue(":lastmsg", last); rangeQuery->exec(); @@ -691,7 +712,7 @@ QList SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int while(rangeQuery->next()) { Message msg(QDateTime::fromTime_t(rangeQuery->value(1).toInt()), - buffer, + bufferInfo, (Message::Type)rangeQuery->value(2).toUInt(), rangeQuery->value(5).toString(), rangeQuery->value(4).toString(), @@ -704,18 +725,7 @@ QList SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int } QString SqliteStorage::backlogFile() { - // kinda ugly, but I currently see no other way to do that -#ifdef Q_OS_WIN32 - QString quasselDir = QDir::homePath() + qgetenv("APPDATA") + "\\quassel\\"; -#else - QString quasselDir = QDir::homePath() + "/.quassel/"; -#endif - - QDir qDir(quasselDir); - if(!qDir.exists(quasselDir)) - qDir.mkpath(quasselDir); - - return quasselDir + "quassel-storage.sqlite"; + return quasselDir().absolutePath() + "/quassel-storage.sqlite"; }