File indexing completed on 2024-05-12 16:23:38
0001 /** 0002 * SPDX-FileCopyrightText: 2020 Tobias Fella <fella@posteo.de> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QSqlQuery> 0010 0011 class Database : public QObject 0012 { 0013 Q_OBJECT 0014 0015 public: 0016 static Database &instance() 0017 { 0018 static Database _instance; 0019 return _instance; 0020 } 0021 bool execute(QSqlQuery &query); 0022 bool execute(const QString &query); 0023 Q_INVOKABLE void addFeed(const QString &url, const QString &groupName = QString(), const bool markEntriesRead = false); 0024 Q_INVOKABLE void importFeeds(const QString &path); 0025 Q_INVOKABLE void exportFeeds(const QString &path); 0026 Q_INVOKABLE void addFeedGroup(const QString &name, const QString &description, const int isDefault = 0); 0027 Q_INVOKABLE void removeFeedGroup(const QString &name); 0028 Q_INVOKABLE void setDefaultGroup(const QString &name); 0029 Q_INVOKABLE void editFeed(const QString &url, const QString &displayName, const QString &groupName); 0030 Q_INVOKABLE void setRead(const QString &entryId, bool read); 0031 0032 Q_SIGNALS: 0033 void feedAdded(const QString &url); 0034 void feedDetailsUpdated(const QString &url, const QString &displayName, const QString &description); 0035 void feedGroupsUpdated(); 0036 void feedGroupRemoved(const QString &groupName); 0037 void entryReadChanged(const QString &entryId, bool read); 0038 0039 private: 0040 bool feedGroupExists(const QString &name); 0041 void clearFeedGroup(const QString &name); 0042 QString defaultGroup(); 0043 0044 Database(); 0045 int version(); 0046 bool migrateTo(const int targetVersion); 0047 bool migrateTo1(); 0048 bool migrateTo2(); 0049 void cleanup(); 0050 bool feedExists(const QString &url); 0051 };