X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.cpp;h=a6f2a72c8819665305923bb4405dde500cc61520;hp=5b52afd6cad269d0d83e68472005142b5d933060;hb=436cb365db846985ef5ce508cb5bf925cd903480;hpb=b9169a652a6854b3fa85aee8f833cb9e18a8d510 diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 5b52afd6..a6f2a72c 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -397,6 +397,58 @@ QVariant PostgreSqlStorage::getUserSetting(UserId userId, const QString &setting } +void PostgreSqlStorage::setCoreState(const QVariantList &data) +{ + QByteArray rawData; + QDataStream out(&rawData, QIODevice::WriteOnly); + out.setVersion(QDataStream::Qt_4_2); + out << data; + + QSqlDatabase db = logDb(); + QSqlQuery selectQuery(db); + selectQuery.prepare(queryString("select_core_state")); + selectQuery.bindValue(":key", "active_sessions"); + safeExec(selectQuery); + watchQuery(selectQuery); + + QString setQueryString; + if (!selectQuery.first()) { + setQueryString = queryString("insert_core_state"); + } + else { + setQueryString = queryString("update_core_state"); + } + + QSqlQuery setQuery(db); + setQuery.prepare(setQueryString); + setQuery.bindValue(":key", "active_sessions"); + setQuery.bindValue(":value", rawData); + safeExec(setQuery); + watchQuery(setQuery); +} + + +QVariantList PostgreSqlStorage::getCoreState(const QVariantList &defaultData) +{ + QSqlQuery query(logDb()); + query.prepare(queryString("select_core_state")); + query.bindValue(":key", "active_sessions"); + safeExec(query); + watchQuery(query); + + if (query.first()) { + QVariantList data; + QByteArray rawData = query.value(0).toByteArray(); + QDataStream in(&rawData, QIODevice::ReadOnly); + in.setVersion(QDataStream::Qt_4_2); + in >> data; + return data; + } else { + return defaultData; + } +} + + IdentityId PostgreSqlStorage::createIdentity(UserId user, CoreIdentity &identity) { IdentityId identityId; @@ -2176,6 +2228,9 @@ bool PostgreSqlMigrationWriter::prepareQuery(MigrationObject mo) case UserSetting: query = queryString("migrate_write_usersetting"); break; + case CoreState: + query = queryString("migrate_write_corestate"); + break; } newQuery(query, logDb()); return true; @@ -2352,6 +2407,13 @@ bool PostgreSqlMigrationWriter::writeMo(const UserSettingMO &userSetting) return exec(); } +bool PostgreSqlMigrationWriter::writeMo(const CoreStateMO &coreState) +{ + bindValue(0, coreState.key); + bindValue(1, coreState.value); + return exec(); +} + bool PostgreSqlMigrationWriter::postProcess() {