File indexing completed on 2024-05-12 16:25:42

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libruqolacore_export.h"
0010 #include "localdatabasebase.h"
0011 #include <QString>
0012 #include <memory>
0013 
0014 class QSqlTableModel;
0015 class Message;
0016 class RocketChatAccount;
0017 class EmojiManager;
0018 class LIBRUQOLACORE_EXPORT LocalMessageDatabase : public LocalDatabaseBase
0019 {
0020 public:
0021     LocalMessageDatabase();
0022     ~LocalMessageDatabase() override;
0023     void deleteMessage(const QString &accountName, const QString &_roomName, const QString &messageId);
0024     void addMessage(const QString &accountName, const QString &_roomName, const Message &m);
0025 
0026     [[nodiscard]] std::unique_ptr<QSqlTableModel> createMessageModel(const QString &accountName, const QString &_roomName) const;
0027 
0028     [[nodiscard]] QVector<Message> loadMessages(const QString &accountName,
0029                                                 const QString &_roomName,
0030                                                 qint64 startId = -1,
0031                                                 qint64 endId = -1,
0032                                                 qint64 numberElements = -1,
0033                                                 EmojiManager *emojiManager = nullptr) const;
0034 
0035     [[nodiscard]] static Message convertJsonToMessage(const QString &json, EmojiManager *emojiManager);
0036 
0037     [[nodiscard]] static QString generateQueryStr(qint64 startId, qint64 endId, qint64 numberElements);
0038 
0039     [[nodiscard]] QVector<Message>
0040     loadMessages(RocketChatAccount *account, const QString &_roomName, qint64 startId, qint64 endId, qint64 numberElements) const;
0041 
0042 protected:
0043     [[nodiscard]] QString schemaDataBase() const override;
0044 };