X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.h;h=5729ac958056c696d3752057b7327c6c0e2ac0aa;hb=7b4bac1b744a407d51f0ece67e0d531206ddad0b;hp=f699ca11b94f6e34e3f4007f0c54cf8b3ef886df;hpb=b9828e0dd235964b8e2e97f844f4bed3476d3bd4;p=quassel.git diff --git a/src/core/postgresqlstorage.h b/src/core/postgresqlstorage.h index f699ca11..5729ac95 100644 --- a/src/core/postgresqlstorage.h +++ b/src/core/postgresqlstorage.h @@ -33,13 +33,16 @@ public: PostgreSqlStorage(QObject *parent = 0); virtual ~PostgreSqlStorage(); + virtual AbstractSqlMigrationWriter *createMigrationWriter(); + public slots: /* General */ - - bool isAvailable() const; - QString displayName() const; - QString description() const; - QVariantMap setupKeys() const; + virtual bool isAvailable() const; + virtual QString displayName() const; + virtual QString description() const; + virtual QStringList setupKeys() const; + virtual QVariantMap setupDefaults() const; + virtual bool setup(const QVariantMap &settings = QVariantMap()); // TODO: Add functions for configuring the backlog handling, i.e. defining auto-cleanup settings etc @@ -130,8 +133,6 @@ private: QString _userName; QString _password; - static int _maxRetryCount; - typedef QHash QueryHash; QHash _preparedQueries; // one query hash per db connection QMutex _queryHashMutex; @@ -140,4 +141,44 @@ private: inline void PostgreSqlStorage::safeExec(QSqlQuery &query) { query.exec(); } + +// ======================================== +// PostgreSqlMigration +// ======================================== +class PostgreSqlMigrationWriter : public PostgreSqlStorage, public AbstractSqlMigrationWriter { + Q_OBJECT + +public: + PostgreSqlMigrationWriter(); + + virtual bool writeMo(const QuasselUserMO &user); + virtual bool writeMo(const SenderMO &sender); + virtual bool writeMo(const IdentityMO &identity); + virtual bool writeMo(const IdentityNickMO &identityNick); + virtual bool writeMo(const NetworkMO &network); + virtual bool writeMo(const BufferMO &buffer); + virtual bool writeMo(const BacklogMO &backlog); + virtual bool writeMo(const IrcServerMO &ircserver); + virtual bool writeMo(const UserSettingMO &userSetting); + + bool prepareQuery(MigrationObject mo); + + virtual bool postProcess(); + +protected: + virtual inline bool transaction() { return logDb().transaction(); } + virtual inline void rollback() { logDb().rollback(); } + virtual inline bool commit() { return logDb().commit(); } + +private: + // helper struct + struct Sequence { + QLatin1String table; + QLatin1String field; + Sequence(const char *table, const char *field) : table(table), field(field) {} + }; + + QSet _validIdentities; +}; + #endif