X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.h;h=06edadbb29bf0e7210baf86b2a20cd999cbac9a6;hp=5be3f80f431270a13248272bd7ba6a583fc5b3ee;hb=502b47a608a55374bd28b6b698971f9f697e2d20;hpb=04315f46a16fc3627218377071e008b6b9744992 diff --git a/src/core/postgresqlstorage.h b/src/core/postgresqlstorage.h index 5be3f80f..06edadbb 100644 --- a/src/core/postgresqlstorage.h +++ b/src/core/postgresqlstorage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -34,25 +34,26 @@ public: PostgreSqlStorage(QObject *parent = 0); virtual ~PostgreSqlStorage(); - virtual AbstractSqlMigrationWriter *createMigrationWriter(); + virtual std::unique_ptr createMigrationWriter(); public slots: /* General */ virtual bool isAvailable() const; + virtual QString backendId() const; virtual QString displayName() const; virtual QString description() const; - virtual QStringList setupKeys() const; - virtual QVariantMap setupDefaults() const; + virtual QVariantList setupData() const; // TODO: Add functions for configuring the backlog handling, i.e. defining auto-cleanup settings etc /* User handling */ - virtual UserId addUser(const QString &user, const QString &password); + virtual UserId addUser(const QString &user, const QString &password, const QString &authenticator = "Database"); virtual bool updateUser(UserId user, const QString &password); virtual void renameUser(UserId user, const QString &newName); virtual UserId validateUser(const QString &user, const QString &password); virtual UserId getUserId(const QString &username); + virtual QString getUserAuthenticator(const UserId userid); virtual UserId internalUser(); virtual void delUser(UserId user); virtual void setUserSetting(UserId userId, const QString &settingName, const QVariant &data); @@ -95,6 +96,9 @@ public slots: virtual QHash bufferLastSeenMsgIds(UserId user); virtual void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId); virtual QHash bufferMarkerLineMsgIds(UserId user); + virtual void setBufferActivity(UserId id, const BufferId &bufferId, const Message::Types &type); + virtual QHash bufferActivities(UserId id); + virtual Message::Types bufferActivity(BufferId &bufferId, MsgId &lastSeenMsgId); /* Message handling */ virtual bool logMessage(Message &msg); @@ -103,7 +107,7 @@ public slots: virtual QList requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1); protected: - virtual void initDbSession(QSqlDatabase &db); + virtual bool initDbSession(QSqlDatabase &db); virtual void setConnectionProperties(const QVariantMap &properties); inline virtual QString driverName() { return "QPSQL"; } inline virtual QString hostName() { return _hostName; } @@ -116,10 +120,11 @@ protected: virtual bool setupSchemaVersion(int version); void safeExec(QSqlQuery &query); + bool beginTransaction(QSqlDatabase &db); bool beginReadOnlyTransaction(QSqlDatabase &db); - QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList ¶ms, const QSqlDatabase &db); - QSqlQuery executePreparedQuery(const QString &queryname, const QVariant ¶m, const QSqlDatabase &db); + QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList ¶ms, QSqlDatabase &db); + QSqlQuery executePreparedQuery(const QString &queryname, const QVariant ¶m, QSqlDatabase &db); void deallocateQuery(const QString &queryname, const QSqlDatabase &db); inline void savePoint(const QString &handle, const QSqlDatabase &db) { db.exec(QString("SAVEPOINT %1").arg(handle)); } @@ -129,8 +134,8 @@ protected: private: void bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info); void bindServerInfo(QSqlQuery &query, const Network::Server &server); - QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, const QSqlDatabase &db); - inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); } + QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, QSqlDatabase &db); + inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); } QString _hostName; int _port; @@ -140,8 +145,6 @@ private: }; -inline void PostgreSqlStorage::safeExec(QSqlQuery &query) { query.exec(); } - // ======================================== // PostgreSqlMigration // ========================================