File indexing completed on 2024-05-12 16:21:27

0001 /**
0002  * SPDX-FileCopyrightText: 2020 Tobias Fella <tobias.fella@kde.org>
0003  * SPDX-FileCopyrightText: 2021-2022 Bart De Vries <bart@mogwai.be>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006  */
0007 
0008 #pragma once
0009 
0010 #include <QObject>
0011 #include <QSqlQuery>
0012 #include <QString>
0013 
0014 class Database : public QObject
0015 {
0016     Q_OBJECT
0017 
0018 public:
0019     static Database &instance()
0020     {
0021         static Database _instance;
0022         return _instance;
0023     }
0024 
0025     static void openDatabase(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection));
0026     static void closeDatabase(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection));
0027 
0028     static bool execute(QSqlQuery &query);
0029     static bool execute(const QString &query, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection));
0030 
0031     static bool transaction(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection));
0032     static bool commit(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection));
0033 
0034 private:
0035     Database();
0036     int version();
0037 
0038     bool migrate();
0039     bool migrateTo1();
0040     bool migrateTo2();
0041     bool migrateTo3();
0042     bool migrateTo4();
0043     bool migrateTo5();
0044     bool migrateTo6();
0045     bool migrateTo7();
0046     bool migrateTo8();
0047     void cleanup();
0048     void setWalMode();
0049 
0050     inline static const QString m_dbName = QStringLiteral("database.db3");
0051 };