-
- virtual MsgId logMessage(Message msg);
- virtual QList<Message> requestMsgs(BufferInfo buffer, int lastmsgs = -1, int offset = -1);
- virtual QList<Message> requestMsgs(BufferInfo buffer, QDateTime since, int offset = -1);
- virtual QList<Message> requestMsgRange(BufferInfo buffer, int first, int last);
-
- public slots:
- //! This is just for importing the old file-based backlog */
- /** This slot needs to be implemented in the storage backends.
- * It should first prepare (delete?) the database, then call initBackLogOld(UserId id).
- * If the importing was successful, backLogEnabledOld will be true afterwards.
- */
- void importOldBacklog();
-
- signals:
- void bufferInfoUpdated(BufferInfo);
-
- protected:
-
- private:
- void initDb();
- void createBuffer(UserId user, const QString &network, const QString &buffer);
- bool watchQuery(QSqlQuery *query);
- QSqlQuery *logMessageQuery;
- QSqlQuery *addSenderQuery;
- QSqlQuery *getLastMessageIdQuery;
- QSqlQuery *requestMsgsQuery;
- QSqlQuery *requestMsgsOffsetQuery;
- QSqlQuery *requestMsgsSinceQuery;
- QSqlQuery *requestMsgsSinceOffsetQuery;
- QSqlQuery *requestMsgRangeQuery;
- QSqlQuery *createNetworkQuery;
- QSqlQuery *createBufferQuery;
- QSqlQuery *getBufferInfoQuery;
+ 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;