/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
Q_OBJECT
public:
- AbstractSqlStorage(QObject *parent = 0);
- virtual ~AbstractSqlStorage();
+ AbstractSqlStorage(QObject *parent = nullptr);
+ ~AbstractSqlStorage() override;
virtual std::unique_ptr<AbstractSqlMigrationReader> createMigrationReader() { return {}; }
virtual std::unique_ptr<AbstractSqlMigrationWriter> createMigrationWriter() { return {}; }
public slots:
- virtual State init(const QVariantMap &settings = QVariantMap());
- virtual bool setup(const QVariantMap &settings = QVariantMap());
+ State init(const QVariantMap &settings = QVariantMap(),
+ const QProcessEnvironment &environment = {},
+ bool loadFromEnvironment = false) override;
+ bool setup(const QVariantMap &settings = QVariantMap(),
+ const QProcessEnvironment &environment = {},
+ bool loadFromEnvironment = false) override;
protected:
- inline virtual void sync() {};
+ inline void sync() override {};
QSqlDatabase logDb();
virtual bool updateSchemaVersion(int newVersion) = 0;
virtual bool setupSchemaVersion(int version) = 0;
- virtual void setConnectionProperties(const QVariantMap &properties) = 0;
+ virtual void setConnectionProperties(const QVariantMap &properties,
+ const QProcessEnvironment &environment,
+ bool loadFromEnvironment) = 0;
virtual QString driverName() = 0;
inline virtual QString hostName() { return QString(); }
inline virtual int port() { return -1; }
void addConnectionToPool();
void dbConnect(QSqlDatabase &db);
- int _schemaVersion;
+ int _schemaVersion{0};
bool _debug;
static int _nextConnectionId;
QHash<QThread *, Connection *> _connectionPool;
};
+struct SenderData {
+ QString sender;
+ QString realname;
+ QString avatarurl;
+
+ friend uint qHash(const SenderData &key);
+ friend bool operator==(const SenderData &a, const SenderData &b);
+};
// ========================================
// AbstractSqlStorage::Connection
Q_OBJECT
public:
- Connection(const QString &name, QObject *parent = 0);
- ~Connection();
+ Connection(const QString &name, QObject *parent = nullptr);
+ ~Connection() override;
inline QLatin1String name() const { return QLatin1String(_name); }
};
struct SenderMO {
- int senderId;
+ qint64 senderId{0};
QString sender;
- SenderMO() : senderId(0) {}
+ QString realname;
+ QString avatarurl;
};
struct IdentityMO {
bool autoAwayReasonEnabled;
bool detachAwayEnabled;
QString detachAwayReason;
- bool detchAwayReasonEnabled;
+ bool detachAwayReasonEnabled;
QString ident;
QString kickReason;
QString partReason;
};
struct NetworkMO {
- NetworkId networkid;
UserId userid;
QString networkname;
- IdentityId identityid;
- QString encodingcodec;
- QString decodingcodec;
- QString servercodec;
- bool userandomserver;
QString perform;
- bool useautoidentify;
QString autoidentifyservice;
QString autoidentifypassword;
- bool useautoreconnect;
+ QString saslaccount;
+ QString saslpassword;
+ QString servercodec;
+ QString encodingcodec;
+ QString decodingcodec;
+ QString usermode;
+ QString awaymessage;
+ QString attachperform;
+ QString detachperform;
+ NetworkId networkid;
+ IdentityId identityid;
+ int messagerateburstsize;
+ int messageratedelay;
int autoreconnectinterval;
int autoreconnectretries;
- bool unlimitedconnectretries;
bool rejoinchannels;
- // Custom rate limiting
+ bool userandomserver;
+ bool useautoidentify;
+ bool usesasl;
+ bool useautoreconnect;
+ bool unlimitedconnectretries;
bool usecustommessagerate;
- int messagerateburstsize;
- int messageratedelay;
bool unlimitedmessagerate;
- // ...
bool connected;
- QString usermode;
- QString awaymessage;
- QString attachperform;
- QString detachperform;
- bool usesasl;
- QString saslaccount;
- QString saslpassword;
};
struct BufferMO {
QString buffername;
QString buffercname;
int buffertype;
- int lastmsgid;
- int lastseenmsgid;
- int markerlinemsgid;
+ qint64 lastmsgid;
+ qint64 lastseenmsgid;
+ qint64 markerlinemsgid;
+ int bufferactivity;
+ int highlightcount;
QString key;
bool joined;
+ QString cipher;
};
struct BacklogMO {
BufferId bufferid;
int type;
int flags;
- int senderid;
+ qint64 senderid;
QString senderprefixes;
QString message;
};
QByteArray settingvalue;
};
+ struct CoreStateMO {
+ QString key;
+ QByteArray value;
+ };
+
enum MigrationObject {
QuasselUser,
Sender,
Buffer,
Backlog,
IrcServer,
- UserSetting
+ UserSetting,
+ CoreState
};
- AbstractSqlMigrator();
- virtual ~AbstractSqlMigrator() {}
+ virtual ~AbstractSqlMigrator() = default;
static QString migrationObject(MigrationObject moType);
virtual bool commit() = 0;
private:
- QSqlQuery *_query;
+ QSqlQuery *_query{nullptr};
};
virtual bool readMo(BacklogMO &backlog) = 0;
virtual bool readMo(IrcServerMO &ircserver) = 0;
virtual bool readMo(UserSettingMO &userSetting) = 0;
+ virtual bool readMo(CoreStateMO &coreState) = 0;
bool migrateTo(AbstractSqlMigrationWriter *writer);
template<typename T> bool transferMo(MigrationObject moType, T &mo);
- AbstractSqlMigrationWriter *_writer;
+ AbstractSqlMigrationWriter *_writer{nullptr};
};
virtual bool writeMo(const BacklogMO &backlog) = 0;
virtual bool writeMo(const IrcServerMO &ircserver) = 0;
virtual bool writeMo(const UserSettingMO &userSetting) = 0;
+ virtual bool writeMo(const CoreStateMO &coreState) = 0;
inline bool migrateFrom(AbstractSqlMigrationReader *reader) { return reader->migrateTo(this); }