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 };