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

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include "libruqolacore_export.h"
0009 #include "localdatabasebase.h"
0010 #include <QObject>
0011 
0012 class LIBRUQOLACORE_EXPORT GlobalDatabase : public LocalDatabaseBase
0013 {
0014 public:
0015     enum class TimeStampType {
0016         MessageTimeStamp,
0017         RoomTimeStamp,
0018         AccountTimeStamp,
0019         // Etc.
0020     };
0021     GlobalDatabase();
0022     ~GlobalDatabase() override;
0023 
0024     void insertOrReplaceTimeStamp(const QString &accountName, const QString &roomName, qint64 timestamp, GlobalDatabase::TimeStampType type);
0025 
0026     [[nodiscard]] QString generateIdentifier(const QString &accountName, const QString &roomName, TimeStampType type);
0027     void removeTimeStamp(const QString &accountName, const QString &roomName, TimeStampType type);
0028 
0029     [[nodiscard]] qint64 timeStamp(const QString &accountName, const QString &roomName, TimeStampType type);
0030 
0031 protected:
0032     [[nodiscard]] LIBRUQOLACORE_NO_EXPORT QString schemaDataBase() const override;
0033 };
0034 Q_DECLARE_METATYPE(GlobalDatabase::TimeStampType)