X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.cpp;h=ee0bf71e14553a9dde9bf7431b7ae0e4947e2509;hp=6b971042a9b73ffd386bb5f46084682e371cbc6b;hb=8961f348947fc55cc4bc769563684af3f2ea7ccc;hpb=c194ed5fb3d15e14b9364f9796d3521910dc72fe diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 6b971042..ee0bf71e 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -20,17 +20,17 @@ #include "postgresqlstorage.h" -#include +#include +#include +#include +#include -#include "logmessage.h" #include "network.h" #include "quassel.h" -PostgreSqlStorage::PostgreSqlStorage(QObject *parent) +PostgreSqlStorage::PostgreSqlStorage(QObject* parent) : AbstractSqlStorage(parent) -{ -} - +{} std::unique_ptr PostgreSqlStorage::createMigrationWriter() { @@ -45,51 +45,41 @@ std::unique_ptr PostgreSqlStorage::createMigrationWr return std::unique_ptr{writer}; } - bool PostgreSqlStorage::isAvailable() const { if (!QSqlDatabase::isDriverAvailable("QPSQL")) { - quWarning() << qPrintable(tr("PostgreSQL driver plugin not available for Qt. Installed drivers:")) + qWarning() << qPrintable(tr("PostgreSQL driver plugin not available for Qt. Installed drivers:")) << qPrintable(QSqlDatabase::drivers().join(", ")); return false; } return true; } - QString PostgreSqlStorage::backendId() const { return QString("PostgreSQL"); } - QString PostgreSqlStorage::displayName() const { - return backendId(); // Note: Pre-0.13 clients use the displayName property for backend idenfication + return backendId(); // Note: Pre-0.13 clients use the displayName property for backend idenfication } - QString PostgreSqlStorage::description() const { // FIXME: proper description return tr("PostgreSQL Turbo Bomber HD!"); } - QVariantList PostgreSqlStorage::setupData() const { QVariantList data; - data << "Username" << tr("Username") << QString("quassel") - << "Password" << tr("Password") << QString() - << "Hostname" << tr("Hostname") << QString("localhost") - << "Port" << tr("Port") << 5432 - << "Database" << tr("Database") << QString("quassel") - ; + data << "Username" << tr("Username") << QString("quassel") << "Password" << tr("Password") << QString() << "Hostname" << tr("Hostname") + << QString("localhost") << "Port" << tr("Port") << 5432 << "Database" << tr("Database") << QString("quassel"); return data; } - -bool PostgreSqlStorage::initDbSession(QSqlDatabase &db) +bool PostgreSqlStorage::initDbSession(QSqlDatabase& db) { // check whether the Qt driver performs string escaping or not. // i.e. test if it doubles slashes. @@ -97,14 +87,14 @@ bool PostgreSqlStorage::initDbSession(QSqlDatabase &db) testField.setType(QVariant::String); testField.setValue("\\"); QString formattedString = db.driver()->formatValue(testField); - switch(formattedString.count('\\')) { + switch (formattedString.count('\\')) { case 2: // yes it does... and we cannot do anything to change the behavior of Qt. // If this is a legacy DB (Postgres < 8.2), then everything is already ok, // as this is the expected behavior. // If it is a newer version, switch to legacy mode. - quWarning() << "Switching Postgres to legacy mode. (set standard conforming strings to off)"; + qWarning() << "Switching Postgres to legacy mode. (set standard conforming strings to off)"; // If the following calls fail, it is a legacy DB anyways, so it doesn't matter // and no need to check the outcome. db.exec("set standard_conforming_strings = off"); @@ -118,14 +108,14 @@ bool PostgreSqlStorage::initDbSession(QSqlDatabase &db) if (query.lastError().isValid()) { // We cannot enable standard conforming strings... // since Quassel does no escaping by itself, this would yield a major vulnerability. - quError() << "Failed to enable standard_conforming_strings for the Postgres db!"; + qCritical() << "Failed to enable standard_conforming_strings for the Postgres db!"; return false; } } break; default: // The slash got replaced with 0 or more than 2 slashes! o_O - quError() << "Your version of Qt does something _VERY_ strange to slashes in QSqlQueries! You should consult your trusted doctor!"; + qCritical() << "Your version of Qt does something _VERY_ strange to slashes in QSqlQueries! You should consult your trusted doctor!"; return false; break; } @@ -133,17 +123,14 @@ bool PostgreSqlStorage::initDbSession(QSqlDatabase &db) // Set the PostgreSQL session timezone to UTC, since we want timestamps stored in UTC QSqlQuery tzQuery = db.exec("SET timezone = 'UTC'"); if (tzQuery.lastError().isValid()) { - quError() << "Failed to set timezone to UTC!"; + qCritical() << "Failed to set timezone to UTC!"; return false; } return true; } - -void PostgreSqlStorage::setConnectionProperties(const QVariantMap &properties, - const QProcessEnvironment &environment, - bool loadFromEnvironment) +void PostgreSqlStorage::setConnectionProperties(const QVariantMap& properties, const QProcessEnvironment& environment, bool loadFromEnvironment) { if (loadFromEnvironment) { _userName = environment.value("DB_PGSQL_USERNAME"); @@ -151,7 +138,8 @@ void PostgreSqlStorage::setConnectionProperties(const QVariantMap &properties, _hostName = environment.value("DB_PGSQL_HOSTNAME"); _port = environment.value("DB_PGSQL_PORT").toInt(); _databaseName = environment.value("DB_PGSQL_DATABASE"); - } else { + } + else { _userName = properties["Username"].toString(); _password = properties["Password"].toString(); _hostName = properties["Hostname"].toString(); @@ -160,7 +148,6 @@ void PostgreSqlStorage::setConnectionProperties(const QVariantMap &properties, } } - int PostgreSqlStorage::installedSchemaVersion() { QSqlQuery query(logDb()); @@ -180,22 +167,40 @@ int PostgreSqlStorage::installedSchemaVersion() return AbstractSqlStorage::installedSchemaVersion(); } - -bool PostgreSqlStorage::updateSchemaVersion(int newVersion) +bool PostgreSqlStorage::updateSchemaVersion(int newVersion, bool clearUpgradeStep) { - QSqlQuery query(logDb()); + // Atomically update the schema version and clear the upgrade step, if specified + // Note: This will need reworked if "updateSchemaVersion" is ever called within a transaction. + QSqlDatabase db = logDb(); + if (!beginTransaction(db)) { + qWarning() << "PostgreSqlStorage::updateSchemaVersion(int, bool): cannot start transaction!"; + qWarning() << " -" << qPrintable(db.lastError().text()); + return false; + } + + QSqlQuery query(db); query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'"); query.bindValue(":version", newVersion); safeExec(query); - bool success = true; if (!watchQuery(query)) { - qCritical() << "PostgreSqlStorage::updateSchemaVersion(int): Updating schema version failed!"; - success = false; + qCritical() << "PostgreSqlStorage::updateSchemaVersion(int, bool): Updating schema version failed!"; + db.rollback(); + return false; } - return success; -} + if (clearUpgradeStep) { + // Try clearing the upgrade step if requested + if (!setSchemaVersionUpgradeStep("")) { + db.rollback(); + return false; + } + } + + // Successful, commit and return true + db.commit(); + return true; +} bool PostgreSqlStorage::setupSchemaVersion(int version) { @@ -212,8 +217,51 @@ bool PostgreSqlStorage::setupSchemaVersion(int version) return success; } +QString PostgreSqlStorage::schemaVersionUpgradeStep() +{ + QSqlQuery query(logDb()); + query.prepare("SELECT value FROM coreinfo WHERE key = 'schemaupgradestep'"); + safeExec(query); + watchQuery(query); + if (query.first()) + return query.value(0).toString(); + + // Fall back to the default value + return AbstractSqlStorage::schemaVersionUpgradeStep(); +} + +bool PostgreSqlStorage::setSchemaVersionUpgradeStep(QString upgradeQuery) +{ + // Intentionally do not wrap in a transaction so other functions can include multiple operations + + QSqlQuery query(logDb()); + query.prepare("UPDATE coreinfo SET value = :upgradestep WHERE key = 'schemaupgradestep'"); + query.bindValue(":upgradestep", upgradeQuery); + safeExec(query); + + // Make sure that the query didn't fail (shouldn't ever happen), and that some non-zero number + // of rows were affected + bool success = watchQuery(query) && query.numRowsAffected() != 0; + + if (!success) { + // The key might not exist (Quassel 0.13.0 and older). Try inserting it... + query = QSqlQuery(logDb()); + query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaupgradestep', :upgradestep)"); + query.bindValue(":upgradestep", upgradeQuery); + safeExec(query); + + if (!watchQuery(query)) { + qCritical() << Q_FUNC_INFO << "Setting schema upgrade step failed!"; + success = false; + } + else { + success = true; + } + } + return success; +} -UserId PostgreSqlStorage::addUser(const QString &user, const QString &password, const QString &authenticator) +UserId PostgreSqlStorage::addUser(const QString& user, const QString& password, const QString& authenticator) { QSqlQuery query(logDb()); query.prepare(queryString("insert_quasseluser")); @@ -231,8 +279,7 @@ UserId PostgreSqlStorage::addUser(const QString &user, const QString &password, return uid; } - -bool PostgreSqlStorage::updateUser(UserId user, const QString &password) +bool PostgreSqlStorage::updateUser(UserId user, const QString& password) { QSqlQuery query(logDb()); query.prepare(queryString("update_userpassword")); @@ -244,8 +291,7 @@ bool PostgreSqlStorage::updateUser(UserId user, const QString &password) return query.numRowsAffected() != 0; } - -void PostgreSqlStorage::renameUser(UserId user, const QString &newName) +void PostgreSqlStorage::renameUser(UserId user, const QString& newName) { QSqlQuery query(logDb()); query.prepare(queryString("update_username")); @@ -256,8 +302,7 @@ void PostgreSqlStorage::renameUser(UserId user, const QString &newName) emit userRenamed(user, newName); } - -UserId PostgreSqlStorage::validateUser(const QString &user, const QString &password) +UserId PostgreSqlStorage::validateUser(const QString& user, const QString& password) { QSqlQuery query(logDb()); query.prepare(queryString("select_authuser")); @@ -265,7 +310,11 @@ UserId PostgreSqlStorage::validateUser(const QString &user, const QString &passw safeExec(query); watchQuery(query); - if (query.first() && checkHashedPassword(query.value(0).toInt(), password, query.value(1).toString(), static_cast(query.value(2).toInt()))) { + if (query.first() + && checkHashedPassword(query.value(0).toInt(), + password, + query.value(1).toString(), + static_cast(query.value(2).toInt()))) { return query.value(0).toInt(); } else { @@ -273,8 +322,7 @@ UserId PostgreSqlStorage::validateUser(const QString &user, const QString &passw } } - -UserId PostgreSqlStorage::getUserId(const QString &user) +UserId PostgreSqlStorage::getUserId(const QString& user) { QSqlQuery query(logDb()); query.prepare(queryString("select_userid")); @@ -321,7 +369,6 @@ UserId PostgreSqlStorage::internalUser() } } - void PostgreSqlStorage::delUser(UserId user) { QSqlDatabase db = logDb(); @@ -344,8 +391,7 @@ void PostgreSqlStorage::delUser(UserId user) } } - -void PostgreSqlStorage::setUserSetting(UserId userId, const QString &settingName, const QVariant &data) +void PostgreSqlStorage::setUserSetting(UserId userId, const QString& settingName, const QVariant& data) { QByteArray rawData; QDataStream out(&rawData, QIODevice::WriteOnly); @@ -377,8 +423,7 @@ void PostgreSqlStorage::setUserSetting(UserId userId, const QString &settingName watchQuery(setQuery); } - -QVariant PostgreSqlStorage::getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultData) +QVariant PostgreSqlStorage::getUserSetting(UserId userId, const QString& settingName, const QVariant& defaultData) { QSqlQuery query(logDb()); query.prepare(queryString("select_user_setting")); @@ -400,8 +445,7 @@ QVariant PostgreSqlStorage::getUserSetting(UserId userId, const QString &setting } } - -void PostgreSqlStorage::setCoreState(const QVariantList &data) +void PostgreSqlStorage::setCoreState(const QVariantList& data) { QByteArray rawData; QDataStream out(&rawData, QIODevice::WriteOnly); @@ -431,8 +475,7 @@ void PostgreSqlStorage::setCoreState(const QVariantList &data) watchQuery(setQuery); } - -QVariantList PostgreSqlStorage::getCoreState(const QVariantList &defaultData) +QVariantList PostgreSqlStorage::getCoreState(const QVariantList& defaultData) { QSqlQuery query(logDb()); query.prepare(queryString("select_core_state")); @@ -447,13 +490,13 @@ QVariantList PostgreSqlStorage::getCoreState(const QVariantList &defaultData) in.setVersion(QDataStream::Qt_4_2); in >> data; return data; - } else { + } + else { return defaultData; } } - -IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity) +IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity& identity) { IdentityId identityId; @@ -494,7 +537,7 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity safeExec(query); if (!watchQuery(query)) { db.rollback(); - return IdentityId(); + return {}; } query.first(); @@ -503,31 +546,30 @@ IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity if (!identityId.isValid()) { db.rollback(); - return IdentityId(); + return {}; } QSqlQuery insertNickQuery(db); insertNickQuery.prepare(queryString("insert_nick")); - foreach(QString nick, identity.nicks()) { + foreach (QString nick, identity.nicks()) { insertNickQuery.bindValue(":identityid", identityId.toInt()); insertNickQuery.bindValue(":nick", nick); safeExec(insertNickQuery); if (!watchQuery(insertNickQuery)) { db.rollback(); - return IdentityId(); + return {}; } } if (!db.commit()) { qWarning() << "PostgreSqlStorage::createIdentity(): committing data failed!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return IdentityId(); + return {}; } return identityId; } - -bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity) +bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity& identity) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -594,7 +636,7 @@ bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity QSqlQuery insertNickQuery(db); insertNickQuery.prepare(queryString("insert_nick")); - foreach(QString nick, identity.nicks()) { + foreach (QString nick, identity.nicks()) { insertNickQuery.bindValue(":identityid", identity.id().toInt()); insertNickQuery.bindValue(":nick", nick); safeExec(insertNickQuery); @@ -612,7 +654,6 @@ bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity return true; } - void PostgreSqlStorage::removeIdentity(UserId user, IdentityId identityId) { QSqlDatabase db = logDb(); @@ -635,7 +676,6 @@ void PostgreSqlStorage::removeIdentity(UserId user, IdentityId identityId) } } - QList PostgreSqlStorage::identities(UserId user) { QList identities; @@ -696,8 +736,7 @@ QList PostgreSqlStorage::identities(UserId user) return identities; } - -NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) +NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo& info) { NetworkId networkId; @@ -715,7 +754,7 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) safeExec(query); if (!watchQuery(query)) { db.rollback(); - return NetworkId(); + return {}; } query.first(); @@ -723,32 +762,31 @@ NetworkId PostgreSqlStorage::createNetwork(UserId user, const NetworkInfo &info) if (!networkId.isValid()) { db.rollback(); - return NetworkId(); + return {}; } QSqlQuery insertServersQuery(db); insertServersQuery.prepare(queryString("insert_server")); - foreach(Network::Server server, info.serverList) { + foreach (Network::Server server, info.serverList) { insertServersQuery.bindValue(":userid", user.toInt()); insertServersQuery.bindValue(":networkid", networkId.toInt()); bindServerInfo(insertServersQuery, server); safeExec(insertServersQuery); if (!watchQuery(insertServersQuery)) { db.rollback(); - return NetworkId(); + return {}; } } if (!db.commit()) { qWarning() << "PostgreSqlStorage::createNetwork(): committing data failed!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return NetworkId(); + return {}; } return networkId; } - -void PostgreSqlStorage::bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info) +void PostgreSqlStorage::bindNetworkInfo(QSqlQuery& query, const NetworkInfo& info) { query.bindValue(":networkname", info.networkName); query.bindValue(":identityid", info.identity.isValid() ? info.identity.toInt() : QVariant()); @@ -777,8 +815,7 @@ void PostgreSqlStorage::bindNetworkInfo(QSqlQuery &query, const NetworkInfo &inf query.bindValue(":networkid", info.networkId.toInt()); } - -void PostgreSqlStorage::bindServerInfo(QSqlQuery &query, const Network::Server &server) +void PostgreSqlStorage::bindServerInfo(QSqlQuery& query, const Network::Server& server) { query.bindValue(":hostname", server.host); query.bindValue(":port", server.port); @@ -794,8 +831,7 @@ void PostgreSqlStorage::bindServerInfo(QSqlQuery &query, const Network::Server & query.bindValue(":sslverify", server.sslVerify); } - -bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info) +bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo& info) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -830,7 +866,7 @@ bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info) QSqlQuery insertServersQuery(db); insertServersQuery.prepare(queryString("insert_server")); - foreach(Network::Server server, info.serverList) { + foreach (Network::Server server, info.serverList) { insertServersQuery.bindValue(":userid", user.toInt()); insertServersQuery.bindValue(":networkid", info.networkId.toInt()); bindServerInfo(insertServersQuery, server); @@ -849,8 +885,7 @@ bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info) return true; } - -bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId &networkId) +bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId& networkId) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -873,7 +908,6 @@ bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId &networkId) return true; } - QList PostgreSqlStorage::networks(UserId user) { QList nets; @@ -956,7 +990,6 @@ QList PostgreSqlStorage::networks(UserId user) return nets; } - QList PostgreSqlStorage::connectedNetworks(UserId user) { QList connectedNets; @@ -982,8 +1015,7 @@ QList PostgreSqlStorage::connectedNetworks(UserId user) return connectedNets; } - -void PostgreSqlStorage::setNetworkConnected(UserId user, const NetworkId &networkId, bool isConnected) +void PostgreSqlStorage::setNetworkConnected(UserId user, const NetworkId& networkId, bool isConnected) { QSqlQuery query(logDb()); query.prepare(queryString("update_network_connected")); @@ -994,8 +1026,7 @@ void PostgreSqlStorage::setNetworkConnected(UserId user, const NetworkId &networ watchQuery(query); } - -QHash PostgreSqlStorage::persistentChannels(UserId user, const NetworkId &networkId) +QHash PostgreSqlStorage::persistentChannels(UserId user, const NetworkId& networkId) { QHash persistentChans; @@ -1021,8 +1052,7 @@ QHash PostgreSqlStorage::persistentChannels(UserId user, const return persistentChans; } - -void PostgreSqlStorage::setChannelPersistent(UserId user, const NetworkId &networkId, const QString &channel, bool isJoined) +void PostgreSqlStorage::setChannelPersistent(UserId user, const NetworkId& networkId, const QString& channel, bool isJoined) { QSqlQuery query(logDb()); query.prepare(queryString("update_buffer_persistent_channel")); @@ -1034,8 +1064,7 @@ void PostgreSqlStorage::setChannelPersistent(UserId user, const NetworkId &netwo watchQuery(query); } - -void PostgreSqlStorage::setPersistentChannelKey(UserId user, const NetworkId &networkId, const QString &channel, const QString &key) +void PostgreSqlStorage::setPersistentChannelKey(UserId user, const NetworkId& networkId, const QString& channel, const QString& key) { QSqlQuery query(logDb()); query.prepare(queryString("update_buffer_set_channel_key")); @@ -1047,7 +1076,6 @@ void PostgreSqlStorage::setPersistentChannelKey(UserId user, const NetworkId &ne watchQuery(query); } - QString PostgreSqlStorage::awayMessage(UserId user, NetworkId networkId) { QSqlQuery query(logDb()); @@ -1062,8 +1090,7 @@ QString PostgreSqlStorage::awayMessage(UserId user, NetworkId networkId) return awayMsg; } - -void PostgreSqlStorage::setAwayMessage(UserId user, NetworkId networkId, const QString &awayMsg) +void PostgreSqlStorage::setAwayMessage(UserId user, NetworkId networkId, const QString& awayMsg) { QSqlQuery query(logDb()); query.prepare(queryString("update_network_set_awaymsg")); @@ -1074,7 +1101,6 @@ void PostgreSqlStorage::setAwayMessage(UserId user, NetworkId networkId, const Q watchQuery(query); } - QString PostgreSqlStorage::userModes(UserId user, NetworkId networkId) { QSqlQuery query(logDb()); @@ -1089,8 +1115,7 @@ QString PostgreSqlStorage::userModes(UserId user, NetworkId networkId) return modes; } - -void PostgreSqlStorage::setUserModes(UserId user, NetworkId networkId, const QString &userModes) +void PostgreSqlStorage::setUserModes(UserId user, NetworkId networkId, const QString& userModes) { QSqlQuery query(logDb()); query.prepare(queryString("update_network_set_usermode")); @@ -1101,14 +1126,13 @@ void PostgreSqlStorage::setUserModes(UserId user, NetworkId networkId, const QSt watchQuery(query); } - -BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer, bool create) +BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId& networkId, BufferInfo::Type type, const QString& buffer, bool create) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { qWarning() << "PostgreSqlStorage::bufferInfo(): cannot start read only transaction!"; qWarning() << " -" << qPrintable(db.lastError().text()); - return BufferInfo(); + return {}; } QSqlQuery query(db); @@ -1136,7 +1160,7 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId if (!create) { db.rollback(); - return BufferInfo(); + return {}; } QSqlQuery createQuery(db); @@ -1163,8 +1187,7 @@ BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId return bufferInfo; } - -BufferInfo PostgreSqlStorage::getBufferInfo(UserId user, const BufferId &bufferId) +BufferInfo PostgreSqlStorage::getBufferInfo(UserId user, const BufferId& bufferId) { QSqlQuery query(logDb()); query.prepare(queryString("select_buffer_by_id")); @@ -1172,18 +1195,21 @@ BufferInfo PostgreSqlStorage::getBufferInfo(UserId user, const BufferId &bufferI query.bindValue(":bufferid", bufferId.toInt()); safeExec(query); if (!watchQuery(query)) - return BufferInfo(); + return {}; if (!query.first()) - return BufferInfo(); + return {}; - BufferInfo bufferInfo(query.value(0).toInt(), query.value(1).toInt(), (BufferInfo::Type)query.value(2).toInt(), 0, query.value(4).toString()); + BufferInfo bufferInfo(query.value(0).toInt(), + query.value(1).toInt(), + (BufferInfo::Type)query.value(2).toInt(), + 0, + query.value(4).toString()); Q_ASSERT(!query.next()); return bufferInfo; } - QList PostgreSqlStorage::requestBuffers(UserId user) { QList bufferlist; @@ -1202,13 +1228,16 @@ QList PostgreSqlStorage::requestBuffers(UserId user) safeExec(query); watchQuery(query); while (query.next()) { - bufferlist << BufferInfo(query.value(0).toInt(), query.value(1).toInt(), (BufferInfo::Type)query.value(2).toInt(), query.value(3).toInt(), query.value(4).toString()); + bufferlist << BufferInfo(query.value(0).toInt(), + query.value(1).toInt(), + (BufferInfo::Type)query.value(2).toInt(), + query.value(3).toInt(), + query.value(4).toString()); } db.commit(); return bufferlist; } - QList PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId) { QList bufferList; @@ -1234,8 +1263,7 @@ QList PostgreSqlStorage::requestBufferIdsForNetwork(UserId user, Netwo return bufferList; } - -bool PostgreSqlStorage::removeBuffer(const UserId &user, const BufferId &bufferId) +bool PostgreSqlStorage::removeBuffer(const UserId& user, const BufferId& bufferId) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -1263,14 +1291,14 @@ bool PostgreSqlStorage::removeBuffer(const UserId &user, const BufferId &bufferI return true; default: // there was more then one buffer deleted... - qWarning() << "PostgreSqlStorage::removeBuffer(): Userid" << user << "BufferId" << "caused deletion of" << numRows << "Buffers! Rolling back transaction..."; + qWarning() << "PostgreSqlStorage::removeBuffer(): Userid" << user << "BufferId" + << "caused deletion of" << numRows << "Buffers! Rolling back transaction..."; db.rollback(); return false; } } - -bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferId, const QString &newName) +bool PostgreSqlStorage::renameBuffer(const UserId& user, const BufferId& bufferId, const QString& newName) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -1300,14 +1328,14 @@ bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferI return true; default: // there was more then one buffer deleted... - qWarning() << "PostgreSqlStorage::renameBuffer(): Userid" << user << "BufferId" << "affected" << numRows << "Buffers! Rolling back transaction..."; + qWarning() << "PostgreSqlStorage::renameBuffer(): Userid" << user << "BufferId" + << "affected" << numRows << "Buffers! Rolling back transaction..."; db.rollback(); return false; } } - -bool PostgreSqlStorage::mergeBuffersPermanently(const UserId &user, const BufferId &bufferId1, const BufferId &bufferId2) +bool PostgreSqlStorage::mergeBuffersPermanently(const UserId& user, const BufferId& bufferId1, const BufferId& bufferId2) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -1357,8 +1385,7 @@ bool PostgreSqlStorage::mergeBuffersPermanently(const UserId &user, const Buffer return true; } - -void PostgreSqlStorage::setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) +void PostgreSqlStorage::setBufferLastSeenMsg(UserId user, const BufferId& bufferId, const MsgId& msgId) { QSqlQuery query(logDb()); query.prepare(queryString("update_buffer_lastseen")); @@ -1370,7 +1397,6 @@ void PostgreSqlStorage::setBufferLastSeenMsg(UserId user, const BufferId &buffer watchQuery(query); } - QHash PostgreSqlStorage::bufferLastSeenMsgIds(UserId user) { QHash lastSeenHash; @@ -1399,8 +1425,7 @@ QHash PostgreSqlStorage::bufferLastSeenMsgIds(UserId user) return lastSeenHash; } - -void PostgreSqlStorage::setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) +void PostgreSqlStorage::setBufferMarkerLineMsg(UserId user, const BufferId& bufferId, const MsgId& msgId) { QSqlQuery query(logDb()); query.prepare(queryString("update_buffer_markerlinemsgid")); @@ -1412,7 +1437,6 @@ void PostgreSqlStorage::setBufferMarkerLineMsg(UserId user, const BufferId &buff watchQuery(query); } - QHash PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user) { QHash markerLineHash; @@ -1441,7 +1465,6 @@ QHash PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } - void PostgreSqlStorage::setBufferActivity(UserId user, BufferId bufferId, Message::Types bufferActivity) { QSqlQuery query(logDb()); @@ -1449,7 +1472,7 @@ void PostgreSqlStorage::setBufferActivity(UserId user, BufferId bufferId, Messag query.bindValue(":userid", user.toInt()); query.bindValue(":bufferid", bufferId.toInt()); - query.bindValue(":bufferactivity", (int) bufferActivity); + query.bindValue(":bufferactivity", (int)bufferActivity); safeExec(query); watchQuery(query); } @@ -1496,7 +1519,7 @@ Message::Types PostgreSqlStorage::bufferActivity(BufferId bufferId, MsgId lastSe return result; } -QHash PostgreSqlStorage::bufferCiphers(UserId user, const NetworkId &networkId) +QHash PostgreSqlStorage::bufferCiphers(UserId user, const NetworkId& networkId) { QHash bufferCiphers; @@ -1522,7 +1545,7 @@ QHash PostgreSqlStorage::bufferCiphers(UserId user, const N return bufferCiphers; } -void PostgreSqlStorage::setBufferCipher(UserId user, const NetworkId &networkId, const QString &bufferName, const QByteArray &cipher) +void PostgreSqlStorage::setBufferCipher(UserId user, const NetworkId& networkId, const QString& bufferName, const QByteArray& cipher) { QSqlQuery query(logDb()); query.prepare(queryString("update_buffer_cipher")); @@ -1534,7 +1557,6 @@ void PostgreSqlStorage::setBufferCipher(UserId user, const NetworkId &networkId, watchQuery(query); } - void PostgreSqlStorage::setHighlightCount(UserId user, BufferId bufferId, int highlightcount) { QSqlQuery query(logDb()); @@ -1583,13 +1605,13 @@ int PostgreSqlStorage::highlightCount(BufferId bufferId, MsgId lastSeenMsgId) query.bindValue(":lastseenmsgid", lastSeenMsgId.toQint64()); safeExec(query); watchQuery(query); - int result = int(0); + auto result = int(0); if (query.first()) result = query.value(0).toInt(); return result; } -bool PostgreSqlStorage::logMessage(Message &msg) +bool PostgreSqlStorage::logMessage(Message& msg) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -1599,9 +1621,7 @@ bool PostgreSqlStorage::logMessage(Message &msg) } QVariantList senderParams; - senderParams << msg.sender() - << msg.realName() - << msg.avatarUrl(); + senderParams << msg.sender() << msg.realName() << msg.avatarUrl(); QSqlQuery getSenderIdQuery = executePreparedQuery("select_senderid", senderParams, db); qint64 senderId; if (getSenderIdQuery.first()) { @@ -1630,12 +1650,7 @@ bool PostgreSqlStorage::logMessage(Message &msg) QVariantList params; // PostgreSQL handles QDateTime()'s serialized format by default, and QDateTime() serializes // to a 64-bit time compatible format by default. - params << msg.timestamp() - << msg.bufferInfo().bufferId().toInt() - << msg.type() - << (int)msg.flags() - << senderId - << msg.senderPrefixes() + params << msg.timestamp() << msg.bufferInfo().bufferId().toInt() << msg.type() << (int)msg.flags() << senderId << msg.senderPrefixes() << msg.contents(); QSqlQuery logMessageQuery = executePreparedQuery("insert_message", params, db); @@ -1656,8 +1671,7 @@ bool PostgreSqlStorage::logMessage(Message &msg) } } - -bool PostgreSqlStorage::logMessages(MessageList &msgs) +bool PostgreSqlStorage::logMessages(MessageList& msgs) { QSqlDatabase db = logDb(); if (!beginTransaction(db)) { @@ -1669,19 +1683,18 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs) QList senderIdList; QHash senderIds; QSqlQuery addSenderQuery; - QSqlQuery selectSenderQuery;; + QSqlQuery selectSenderQuery; + ; for (int i = 0; i < msgs.count(); i++) { - auto &msg = msgs.at(i); - SenderData sender = { msg.sender(), msg.realName(), msg.avatarUrl() }; + auto& msg = msgs.at(i); + SenderData sender = {msg.sender(), msg.realName(), msg.avatarUrl()}; if (senderIds.contains(sender)) { senderIdList << senderIds[sender]; continue; } QVariantList senderParams; - senderParams << sender.sender - << sender.realname - << sender.avatarurl; + senderParams << sender.sender << sender.realname << sender.avatarurl; selectSenderQuery = executePreparedQuery("select_senderid", senderParams, db); if (selectSenderQuery.first()) { @@ -1712,17 +1725,12 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs) // yes we loop twice over the same list. This avoids alternating queries. bool error = false; for (int i = 0; i < msgs.count(); i++) { - Message &msg = msgs[i]; + Message& msg = msgs[i]; QVariantList params; // PostgreSQL handles QDateTime()'s serialized format by default, and QDateTime() serializes // to a 64-bit time compatible format by default. - params << msg.timestamp() - << msg.bufferInfo().bufferId().toInt() - << msg.type() - << (int)msg.flags() - << senderIdList.at(i) - << msg.senderPrefixes() - << msg.contents(); + params << msg.timestamp() << msg.bufferInfo().bufferId().toInt() << msg.type() << (int)msg.flags() << senderIdList.at(i) + << msg.senderPrefixes() << msg.contents(); QSqlQuery logMessageQuery = executePreparedQuery("insert_message", params, db); if (!watchQuery(logMessageQuery)) { db.rollback(); @@ -1747,7 +1755,6 @@ bool PostgreSqlStorage::logMessages(MessageList &msgs) return true; } - QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit) { QList messagelist; @@ -1800,14 +1807,14 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms timestamp = query.value(1).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, - bufferInfo, - (Message::Type)query.value(2).toInt(), - query.value(8).toString(), - query.value(4).toString(), - query.value(5).toString(), - query.value(6).toString(), - query.value(7).toString(), - (Message::Flags)query.value(3).toInt()); + bufferInfo, + (Message::Type)query.value(2).toInt(), + query.value(8).toString(), + query.value(4).toString(), + query.value(5).toString(), + query.value(6).toString(), + query.value(7).toString(), + (Message::Flags)query.value(3).toInt()); msg.setMsgId(query.value(0).toLongLong()); messagelist << msg; } @@ -1816,8 +1823,8 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms return messagelist; } - -QList PostgreSqlStorage::requestMsgsFiltered(UserId user, BufferId bufferId, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags) +QList PostgreSqlStorage::requestMsgsFiltered( + UserId user, BufferId bufferId, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags) { QList messagelist; @@ -1837,10 +1844,12 @@ QList PostgreSqlStorage::requestMsgsFiltered(UserId user, BufferId buff QSqlQuery query(db); if (last == -1 && first == -1) { query.prepare(queryString("select_messagesNewestK_filtered")); - } else if (last == -1) { + } + else if (last == -1) { query.prepare(queryString("select_messagesNewerThan_filtered")); query.bindValue(":first", first.toQint64()); - } else { + } + else { query.prepare(queryString("select_messagesRange_filtered")); query.bindValue(":last", last.toQint64()); query.bindValue(":first", first.toQint64()); @@ -1882,14 +1891,13 @@ QList PostgreSqlStorage::requestMsgsFiltered(UserId user, BufferId buff return messagelist; } - QList PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId last, int limit) { QList messagelist; // requestBuffers uses it's own transaction. QHash bufferInfoHash; - foreach(BufferInfo bufferInfo, requestBuffers(user)) { + foreach (BufferInfo bufferInfo, requestBuffers(user)) { bufferInfoHash[bufferInfo.bufferId()] = bufferInfo; } @@ -1923,14 +1931,14 @@ QList PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId timestamp = query.value(2).toDateTime(); timestamp.setTimeSpec(Qt::UTC); Message msg(timestamp, - bufferInfoHash[query.value(1).toInt()], - (Message::Type)query.value(3).toInt(), - query.value(9).toString(), - query.value(5).toString(), - query.value(6).toString(), - query.value(7).toString(), - query.value(8).toString(), - (Message::Flags)query.value(4).toInt()); + bufferInfoHash[query.value(1).toInt()], + (Message::Type)query.value(3).toInt(), + query.value(9).toString(), + query.value(5).toString(), + query.value(6).toString(), + query.value(7).toString(), + query.value(8).toString(), + (Message::Flags)query.value(4).toInt()); msg.setMsgId(query.value(0).toLongLong()); messagelist << msg; } @@ -1939,16 +1947,16 @@ QList PostgreSqlStorage::requestAllMsgs(UserId user, MsgId first, MsgId return messagelist; } - -QList PostgreSqlStorage::requestAllMsgsFiltered(UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags) +QList PostgreSqlStorage::requestAllMsgsFiltered( + UserId user, MsgId first, MsgId last, int limit, Message::Types type, Message::Flags flags) { QList messagelist; // requestBuffers uses it's own transaction. QHash bufferInfoHash; - foreach(BufferInfo bufferInfo, requestBuffers(user)) { - bufferInfoHash[bufferInfo.bufferId()] = bufferInfo; - } + foreach (BufferInfo bufferInfo, requestBuffers(user)) { + bufferInfoHash[bufferInfo.bufferId()] = bufferInfo; + } QSqlDatabase db = logDb(); if (!beginReadOnlyTransaction(db)) { @@ -2017,7 +2025,6 @@ QMap PostgreSqlStorage::getAllAuthUserNames() return authusernames; } - // void PostgreSqlStorage::safeExec(QSqlQuery &query) { // qDebug() << "PostgreSqlStorage::safeExec"; // qDebug() << " executing:\n" << query.executedQuery(); @@ -2041,8 +2048,7 @@ QMap PostgreSqlStorage::getAllAuthUserNames() // return; // } - -bool PostgreSqlStorage::beginTransaction(QSqlDatabase &db) +bool PostgreSqlStorage::beginTransaction(QSqlDatabase& db) { bool result = db.transaction(); if (!db.isOpen()) { @@ -2052,7 +2058,7 @@ bool PostgreSqlStorage::beginTransaction(QSqlDatabase &db) return result; } -bool PostgreSqlStorage::beginReadOnlyTransaction(QSqlDatabase &db) +bool PostgreSqlStorage::beginReadOnlyTransaction(QSqlDatabase& db) { QSqlQuery query = db.exec("BEGIN TRANSACTION READ ONLY"); if (!db.isOpen()) { @@ -2062,8 +2068,7 @@ bool PostgreSqlStorage::beginReadOnlyTransaction(QSqlDatabase &db) return !query.lastError().isValid(); } - -QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, QSqlDatabase &db) +QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString& queryname, const QString& paramstring, QSqlDatabase& db) { // Query preparing is done lazily. That means that instead of always checking if the query is already prepared // we just EXECUTE and catch the error @@ -2082,18 +2087,21 @@ QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, co if (!db.isOpen()) { db = logDb(); if (!beginTransaction(db)) { - qWarning() << "PostgreSqlStorage::prepareAndExecuteQuery(): cannot start transaction while recovering from connection loss!"; + qWarning() + << "PostgreSqlStorage::prepareAndExecuteQuery(): cannot start transaction while recovering from connection loss!"; qWarning() << " -" << qPrintable(db.lastError().text()); return query; } db.exec("SAVEPOINT quassel_prepare_query"); - } else { + } + else { db.exec("ROLLBACK TO SAVEPOINT quassel_prepare_query"); } // and once again: Qt leaves us without error codes so we either parse (language dependent(!)) strings // or we just guess the error. As we're only interested in unprepared queries, this will be our guess. :) - QSqlQuery checkQuery = db.exec(QString("SELECT count(name) FROM pg_prepared_statements WHERE name = 'quassel_%1' AND from_sql = TRUE").arg(queryname.toLower())); + QSqlQuery checkQuery = db.exec( + QString("SELECT count(name) FROM pg_prepared_statements WHERE name = 'quassel_%1' AND from_sql = TRUE").arg(queryname.toLower())); checkQuery.first(); if (checkQuery.value(0).toInt() == 0) { db.exec(QString("PREPARE quassel_%1 AS %2").arg(queryname).arg(queryString(queryname))); @@ -2121,15 +2129,14 @@ QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, co return query; } - -QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariantList ¶ms, QSqlDatabase &db) +QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString& queryname, const QVariantList& params, QSqlDatabase& db) { - QSqlDriver *driver = db.driver(); + QSqlDriver* driver = db.driver(); QStringList paramStrings; QSqlField field; for (int i = 0; i < params.count(); i++) { - const QVariant &value = params.at(i); + const QVariant& value = params.at(i); field.setType(value.type()); if (value.isNull()) field.clear(); @@ -2147,8 +2154,7 @@ QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, cons } } - -QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariant ¶m, QSqlDatabase &db) +QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString& queryname, const QVariant& param, QSqlDatabase& db) { QSqlField field; field.setType(param.type()); @@ -2161,27 +2167,23 @@ QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, cons return prepareAndExecuteQuery(queryname, paramString, db); } - -void PostgreSqlStorage::deallocateQuery(const QString &queryname, const QSqlDatabase &db) +void PostgreSqlStorage::deallocateQuery(const QString& queryname, const QSqlDatabase& db) { db.exec(QString("DEALLOCATE quassel_%1").arg(queryname)); } - -void PostgreSqlStorage::safeExec(QSqlQuery &query) +void PostgreSqlStorage::safeExec(QSqlQuery& query) { // If the query fails due to the connection being gone, it seems to cause // exec() to return false but no lastError to be set - if(!query.exec() && !query.lastError().isValid()) - { + if (!query.exec() && !query.lastError().isValid()) { QSqlDatabase db = logDb(); QSqlQuery retryQuery(db); retryQuery.prepare(query.lastQuery()); QMapIterator i(query.boundValues()); - while (i.hasNext()) - { + while (i.hasNext()) { i.next(); - retryQuery.bindValue(i.key(),i.value()); + retryQuery.bindValue(i.key(), i.value()); } query = retryQuery; query.exec(); @@ -2193,9 +2195,7 @@ void PostgreSqlStorage::safeExec(QSqlQuery &query) // ======================================== PostgreSqlMigrationWriter::PostgreSqlMigrationWriter() : PostgreSqlStorage() -{ -} - +{} bool PostgreSqlMigrationWriter::prepareQuery(MigrationObject mo) { @@ -2237,9 +2237,8 @@ bool PostgreSqlMigrationWriter::prepareQuery(MigrationObject mo) return true; } - -//bool PostgreSqlMigrationWriter::writeUser(const QuasselUserMO &user) { -bool PostgreSqlMigrationWriter::writeMo(const QuasselUserMO &user) +// bool PostgreSqlMigrationWriter::writeUser(const QuasselUserMO &user) { +bool PostgreSqlMigrationWriter::writeMo(const QuasselUserMO& user) { bindValue(0, user.id.toInt()); bindValue(1, user.username); @@ -2249,9 +2248,8 @@ bool PostgreSqlMigrationWriter::writeMo(const QuasselUserMO &user) return exec(); } - -//bool PostgreSqlMigrationWriter::writeSender(const SenderMO &sender) { -bool PostgreSqlMigrationWriter::writeMo(const SenderMO &sender) +// bool PostgreSqlMigrationWriter::writeSender(const SenderMO &sender) { +bool PostgreSqlMigrationWriter::writeMo(const SenderMO& sender) { bindValue(0, sender.senderId); bindValue(1, sender.sender); @@ -2260,9 +2258,8 @@ bool PostgreSqlMigrationWriter::writeMo(const SenderMO &sender) return exec(); } - -//bool PostgreSqlMigrationWriter::writeIdentity(const IdentityMO &identity) { -bool PostgreSqlMigrationWriter::writeMo(const IdentityMO &identity) +// bool PostgreSqlMigrationWriter::writeIdentity(const IdentityMO &identity) { +bool PostgreSqlMigrationWriter::writeMo(const IdentityMO& identity) { _validIdentities << identity.id.toInt(); bindValue(0, identity.id.toInt()); @@ -2289,9 +2286,8 @@ bool PostgreSqlMigrationWriter::writeMo(const IdentityMO &identity) return exec(); } - -//bool PostgreSqlMigrationWriter::writeIdentityNick(const IdentityNickMO &identityNick) { -bool PostgreSqlMigrationWriter::writeMo(const IdentityNickMO &identityNick) +// bool PostgreSqlMigrationWriter::writeIdentityNick(const IdentityNickMO &identityNick) { +bool PostgreSqlMigrationWriter::writeMo(const IdentityNickMO& identityNick) { bindValue(0, identityNick.nickid); bindValue(1, identityNick.identityId.toInt()); @@ -2299,9 +2295,8 @@ bool PostgreSqlMigrationWriter::writeMo(const IdentityNickMO &identityNick) return exec(); } - -//bool PostgreSqlMigrationWriter::writeNetwork(const NetworkMO &network) { -bool PostgreSqlMigrationWriter::writeMo(const NetworkMO &network) +// bool PostgreSqlMigrationWriter::writeNetwork(const NetworkMO &network) { +bool PostgreSqlMigrationWriter::writeMo(const NetworkMO& network) { bindValue(0, network.networkid.toInt()); bindValue(1, network.userid.toInt()); @@ -2339,9 +2334,8 @@ bool PostgreSqlMigrationWriter::writeMo(const NetworkMO &network) return exec(); } - -//bool PostgreSqlMigrationWriter::writeBuffer(const BufferMO &buffer) { -bool PostgreSqlMigrationWriter::writeMo(const BufferMO &buffer) +// bool PostgreSqlMigrationWriter::writeBuffer(const BufferMO &buffer) { +bool PostgreSqlMigrationWriter::writeMo(const BufferMO& buffer) { bindValue(0, buffer.bufferid.toInt()); bindValue(1, buffer.userid.toInt()); @@ -2361,9 +2355,8 @@ bool PostgreSqlMigrationWriter::writeMo(const BufferMO &buffer) return exec(); } - -//bool PostgreSqlMigrationWriter::writeBacklog(const BacklogMO &backlog) { -bool PostgreSqlMigrationWriter::writeMo(const BacklogMO &backlog) +// bool PostgreSqlMigrationWriter::writeBacklog(const BacklogMO &backlog) { +bool PostgreSqlMigrationWriter::writeMo(const BacklogMO& backlog) { bindValue(0, backlog.messageid.toQint64()); bindValue(1, backlog.time); @@ -2376,9 +2369,8 @@ bool PostgreSqlMigrationWriter::writeMo(const BacklogMO &backlog) return exec(); } - -//bool PostgreSqlMigrationWriter::writeIrcServer(const IrcServerMO &ircserver) { -bool PostgreSqlMigrationWriter::writeMo(const IrcServerMO &ircserver) +// bool PostgreSqlMigrationWriter::writeIrcServer(const IrcServerMO &ircserver) { +bool PostgreSqlMigrationWriter::writeMo(const IrcServerMO& ircserver) { bindValue(0, ircserver.serverid); bindValue(1, ircserver.userid.toInt()); @@ -2398,9 +2390,8 @@ bool PostgreSqlMigrationWriter::writeMo(const IrcServerMO &ircserver) return exec(); } - -//bool PostgreSqlMigrationWriter::writeUserSetting(const UserSettingMO &userSetting) { -bool PostgreSqlMigrationWriter::writeMo(const UserSettingMO &userSetting) +// bool PostgreSqlMigrationWriter::writeUserSetting(const UserSettingMO &userSetting) { +bool PostgreSqlMigrationWriter::writeMo(const UserSettingMO& userSetting) { bindValue(0, userSetting.userid.toInt()); bindValue(1, userSetting.settingname); @@ -2408,26 +2399,20 @@ bool PostgreSqlMigrationWriter::writeMo(const UserSettingMO &userSetting) return exec(); } -bool PostgreSqlMigrationWriter::writeMo(const CoreStateMO &coreState) +bool PostgreSqlMigrationWriter::writeMo(const CoreStateMO& coreState) { bindValue(0, coreState.key); bindValue(1, coreState.value); return exec(); } - bool PostgreSqlMigrationWriter::postProcess() { QSqlDatabase db = logDb(); QList sequences; - sequences << Sequence("backlog", "messageid") - << Sequence("buffer", "bufferid") - << Sequence("identity", "identityid") - << Sequence("identity_nick", "nickid") - << Sequence("ircserver", "serverid") - << Sequence("network", "networkid") - << Sequence("quasseluser", "userid") - << Sequence("sender", "senderid"); + sequences << Sequence("backlog", "messageid") << Sequence("buffer", "bufferid") << Sequence("identity", "identityid") + << Sequence("identity_nick", "nickid") << Sequence("ircserver", "serverid") << Sequence("network", "networkid") + << Sequence("quasseluser", "userid") << Sequence("sender", "senderid"); QList::const_iterator iter; for (iter = sequences.constBegin(); iter != sequences.constEnd(); ++iter) { resetQuery();