+ bool logMessage(Message& msg) override;
+ bool logMessages(MessageList& msgs) override;
+ QList<Message> requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+ QList<Message> requestMsgsFiltered(UserId user,
+ BufferId bufferId,
+ MsgId first = -1,
+ MsgId last = -1,
+ int limit = -1,
+ Message::Types type = Message::Types{-1},
+ Message::Flags flags = Message::Flags{-1}) override;
+ QList<Message> requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) override;
+ QList<Message> requestAllMsgsFiltered(UserId user,
+ MsgId first = -1,
+ MsgId last = -1,
+ int limit = -1,
+ Message::Types type = Message::Types{-1},
+ Message::Flags flags = Message::Flags{-1}) override;
+
+ /* Sysident handling */
+ QMap<UserId, QString> getAllAuthUserNames() override;
+
+protected:
+ void setConnectionProperties(const QVariantMap& properties, const QProcessEnvironment& environment, bool loadFromEnvironment) override
+ {
+ Q_UNUSED(properties);
+ Q_UNUSED(environment);
+ Q_UNUSED(loadFromEnvironment);
+ }
+ // SQLite does not have any connection properties to set
+ QString driverName() override { return "QSQLITE"; }
+ QString databaseName() override { return backlogFile(); }
+ int installedSchemaVersion() override;
+ bool updateSchemaVersion(int newVersion) override;
+ bool setupSchemaVersion(int version) override;
+ bool safeExec(QSqlQuery& query, int retryCount = 0);
+
+private:
+ static QString backlogFile();
+ void bindNetworkInfo(QSqlQuery& query, const NetworkInfo& info);
+ void bindServerInfo(QSqlQuery& query, const Network::Server& server);
+
+ inline void lockForRead() { _dbLock.lockForRead(); }
+ inline void lockForWrite() { _dbLock.lockForWrite(); }
+ inline void unlock() { _dbLock.unlock(); }
+ QReadWriteLock _dbLock;
+ static int _maxRetryCount;
+};