X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsqlitestorage.cpp;h=003d57a694246805e0e7994f09f8aae3ea937cba;hp=974740df4e3190bc799903ea1e815e629a7b0968;hb=c5d6b6156d0d360940c45db3ae88bce808dce1ee;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 974740df..003d57a6 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -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()); @@ -969,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) {