X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=003d57a694246805e0e7994f09f8aae3ea937cba;hp=cbcacf7149959875a2f529b9ef3b22bb50d44376;hb=dc2aa39d20b60e7cd8e0ba66ca6c9ed729add008;hpb=674ad8ee4369cbc9516eb6d6629a616e9310c71f diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index cbcacf71..003d57a6 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... @@ -65,6 +64,34 @@ int SqliteStorage::installedSchemaVersion() { return AbstractSqlStorage::installedSchemaVersion(); } +bool SqliteStorage::updateSchemaVersion(int newVersion) { + QSqlQuery query(logDb()); + query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'"); + query.bindValue(":version", newVersion); + query.exec(); + + bool success = true; + if(query.lastError().isValid()) { + qCritical() << "SqliteStorage::updateSchemaVersion(int): Updating schema version failed!"; + success = false; + } + return success; +} + +bool SqliteStorage::setupSchemaVersion(int version) { + QSqlQuery query(logDb()); + query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaversion', :version)"); + query.bindValue(":version", version); + query.exec(); + + bool success = true; + if(query.lastError().isValid()) { + qCritical() << "SqliteStorage::setupSchemaVersion(int): Updating schema version failed!"; + success = false; + } + return success; +} + UserId SqliteStorage::addUser(const QString &user, const QString &password) { QSqlQuery query(logDb()); query.prepare(queryString("insert_quasseluser")); @@ -677,6 +704,51 @@ void SqliteStorage::setPersistentChannelKey(UserId user, const NetworkId &networ watchQuery(query); } +QString SqliteStorage::awayMessage(UserId user, NetworkId networkId) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_network_awaymsg")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":networkid", networkId.toInt()); + safeExec(query); + watchQuery(query); + QString awayMsg; + if(query.first()) + awayMsg = query.value(0).toString(); + return awayMsg; +} + +void SqliteStorage::setAwayMessage(UserId user, NetworkId networkId, const QString &awayMsg) { + QSqlQuery query(logDb()); + query.prepare(queryString("update_network_set_awaymsg")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":networkid", networkId.toInt()); + query.bindValue(":awaymsg", awayMsg); + safeExec(query); + watchQuery(query); +} + +QString SqliteStorage::userModes(UserId user, NetworkId networkId) { + QSqlQuery query(logDb()); + query.prepare(queryString("select_network_usermode")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":networkid", networkId.toInt()); + safeExec(query); + watchQuery(query); + QString modes; + if(query.first()) + modes = query.value(0).toString(); + return modes; +} + +void SqliteStorage::setUserModes(UserId user, NetworkId networkId, const QString &userModes) { + QSqlQuery query(logDb()); + query.prepare(queryString("update_network_set_usermode")); + query.bindValue(":userid", user.toInt()); + query.bindValue(":networkid", networkId.toInt()); + query.bindValue(":usermode", userModes); + safeExec(query); + watchQuery(query); +} void SqliteStorage::createBuffer(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer) { QSqlQuery query(logDb()); @@ -901,15 +973,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); @@ -965,7 +1041,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) {