X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=5dd9721030564d2eab55af658452dca3301d1fa6;hp=e1a536000d8b77af8f958458c21419b9b3cfadb1;hb=5e5714fb2abf8feaf9cc4a27a26e86f2f9c45b30;hpb=bb799766223a6388e476f320ad74720c802b2d83 diff --git a/src/core/core.cpp b/src/core/core.cpp index e1a53600..5dd97210 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -23,6 +23,7 @@ #include "core.h" #include "coresession.h" #include "coresettings.h" +#include "postgresqlstorage.h" #include "quassel.h" #include "signalproxy.h" #include "sqlitestorage.h" @@ -132,12 +133,35 @@ Core::Core() // Register storage backends here! registerStorageBackend(new SqliteStorage(this)); + registerStorageBackend(new PostgreSqlStorage(this)); connect(&_storageSyncTimer, SIGNAL(timeout()), this, SLOT(syncStorage())); _storageSyncTimer.start(10 * 60 * 1000); // 10 minutes } void Core::init() { + CoreSettings cs2; + QVariantMap connectionProperties = cs2.storageSettings().toMap()["ConnectionProperties"].toMap(); + qDebug() << connectionProperties; + SqliteMigrationReader *reader = new SqliteMigrationReader(); + qDebug() << "reader:" << reader->init(); + PostgreSqlMigrationWriter *writer = new PostgreSqlMigrationWriter(); + qDebug() << "writer:" << writer->init(connectionProperties); + qDebug() << qPrintable(QString("Migrating Storage backend %1 to %2...").arg(reader->displayName(), writer->displayName())); + if(reader->migrateTo(writer)) + qDebug() << "Migration finished!"; + return; + + + + + + + + + + + CoreSettings cs; _configured = initStorage(cs.storageSettings().toMap()); @@ -273,12 +297,14 @@ bool Core::initStorage(QVariantMap dbSettings, bool setup) { return false; } - Storage::State storageState = storage->init(dbSettings); + QVariantMap connectionProperties = dbSettings["ConnectionProperties"].toMap(); + + Storage::State storageState = storage->init(connectionProperties); switch(storageState) { case Storage::NeedsSetup: if(!setup) return false; // trigger setup process - if(storage->setup(dbSettings)) + if(storage->setup(connectionProperties)) return initStorage(dbSettings, false); // if setup wasn't successfull we mark the backend as unavailable case Storage::NotAvailable: @@ -501,6 +527,8 @@ void Core::processClientMessage(QTcpSocket *socket, const QVariantMap &msg) { QVariantMap v; v["DisplayName"] = backend->displayName(); v["Description"] = backend->description(); + v["ConnectionProperties"] = backend->setupKeys(); + qDebug() << backend->setupKeys(); backends.append(v); } reply["StorageBackends"] = backends;