X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=e19940934bbe6272a6d0ee5ac65f7cbef43abf16;hp=2876d5c670ff591ce098d7b8c015f423175b4f61;hb=f448828fb29f3d23d9306f777cd264a13fde0e9a;hpb=2eae29a94017197946f0c216e03367247c6e36be diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 2876d5c6..e1994093 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-07 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -22,10 +22,9 @@ #include -#include "network.h" - -#include "util.h" #include "logger.h" +#include "network.h" +#include "quassel.h" int SqliteStorage::_maxRetryCount = 150; // yes this is a large number... only other way to "handle" this is bailing out... @@ -691,7 +690,7 @@ void SqliteStorage::createBuffer(UserId user, const NetworkId &networkId, Buffer watchQuery(query); } -BufferInfo SqliteStorage::getBufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer) { +BufferInfo SqliteStorage::bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer, bool create) { QSqlQuery query(logDb()); query.prepare(queryString("select_bufferByName")); query.bindValue(":networkid", networkId.toInt()); @@ -700,6 +699,9 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const NetworkId &networkId, safeExec(query); if(!query.first()) { + if(!create) + return BufferInfo(); + createBuffer(user, networkId, type, buffer); safeExec(query); if(!query.first()) { @@ -898,15 +900,19 @@ QList SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId return messagelist; QSqlQuery query(logDb()); - if(last == -1) { - query.prepare(queryString("select_messagesNew")); + + if(last == -1 && first == -1) { + query.prepare(queryString("select_messagesNewestK")); + } else if(last == -1) { + query.prepare(queryString("select_messagesNewerThan")); + query.bindValue(":firstmsg", first.toInt()); } else { query.prepare(queryString("select_messages")); query.bindValue(":lastmsg", last.toInt()); + query.bindValue(":firstmsg", first.toInt()); } query.bindValue(":bufferid", bufferId.toInt()); - query.bindValue(":firstmsg", first.toInt()); query.bindValue(":limit", limit); safeExec(query); @@ -962,7 +968,7 @@ QList SqliteStorage::requestAllMsgs(UserId user, MsgId first, MsgId las } QString SqliteStorage::backlogFile() { - return quasselDir().absolutePath() + "/quassel-storage.sqlite"; + return Quassel::configDirPath() + "quassel-storage.sqlite"; } bool SqliteStorage::safeExec(QSqlQuery &query, int retryCount) {