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 <QString>
0011 class QSqlDatabase;
0012 class LIBRUQOLACORE_EXPORT LocalDatabaseBase
0013 {
0014 public:
0015     enum class DatabaseType {
0016         Unknown = 0,
0017         Account,
0018         Rooms,
0019         Message,
0020         Logger,
0021         Global,
0022     };
0023     explicit LocalDatabaseBase(const QString &basePath, DatabaseType type);
0024     virtual ~LocalDatabaseBase();
0025     [[nodiscard]] QString dbFileName(const QString &accountName, const QString &roomName) const;
0026     [[nodiscard]] QString dbFileName(const QString &accountName) const;
0027 
0028     // Only for test!
0029     [[nodiscard]] QString schemaDatabaseStr() const;
0030 
0031 protected:
0032     [[nodiscard]] virtual QString schemaDataBase() const;
0033     [[nodiscard]] bool initializeDataBase(const QString &accountName, const QString &_roomName, QSqlDatabase &db);
0034     [[nodiscard]] bool initializeDataBase(const QString &accountName, QSqlDatabase &db);
0035     [[nodiscard]] bool checkDataBase(const QString &accountName, const QString &_roomName, QSqlDatabase &db);
0036     [[nodiscard]] bool checkDataBase(const QString &accountName, QSqlDatabase &db);
0037     [[nodiscard]] QString databaseName(const QString &name) const;
0038     const QString mBasePath;
0039     const DatabaseType mDatabaseType = DatabaseType::Unknown;
0040 };