1 #ifndef DB_HELPER_H
2 #define DB_HELPER_H
3 
4 class QString;
5 #include <QMap>
6 #include <QList>
7 #include "yacreader_global.h"
8 
9 class ComicDB;
10 class Folder;
11 class LibraryItem;
12 class Label;
13 class QSqlDatabase;
14 class ComicInfo;
15 class QSqlRecord;
16 class QSqlQuery;
17 class YACReaderLibraries;
18 class ReadingList;
19 
20 class DBHelper
21 {
22 public:
23     //server
24     static YACReaderLibraries getLibraries();
25     static QList<LibraryItem *> getFolderSubfoldersFromLibrary(qulonglong libraryId, qulonglong folderId);
26     static QList<LibraryItem *> getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId);
27     static QList<LibraryItem *> getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId, bool sort);
28     static QList<LibraryItem *> getFolderComicsFromLibraryForReading(qulonglong libraryId, qulonglong folderId);
29     static quint32 getNumChildrenFromFolder(qulonglong libraryId, qulonglong folderId);
30     static qulonglong getParentFromComicFolderId(qulonglong libraryId, qulonglong id);
31     static ComicDB getComicInfo(qulonglong libraryId, qulonglong id);
32     static QList<ComicDB> getSiblings(qulonglong libraryId, qulonglong parentId);
33     static QString getFolderName(qulonglong libraryId, qulonglong id);
34     static QList<QString> getLibrariesNames();
35     static QString getLibraryName(int id);
36     static QList<ComicDB> getLabelComics(qulonglong libraryId, qulonglong labelId);
37     static QList<ComicDB> getFavorites(qulonglong libraryId);
38     static QList<ComicDB> getReading(qulonglong libraryId);
39     static QList<ReadingList> getReadingLists(qulonglong libraryId);
40     static QList<ComicDB> getReadingListFullContent(qulonglong libraryId, qulonglong readingListId, bool getFullComicInfoFields = false);
41 
42     //objects management
43     //deletes
44     static void removeFromDB(LibraryItem *item, QSqlDatabase &db);
45     static void removeFromDB(Folder *folder, QSqlDatabase &db);
46     static void removeFromDB(ComicDB *comic, QSqlDatabase &db);
47     static void removeLabelFromDB(qulonglong id, QSqlDatabase &db);
48     static void removeListFromDB(qulonglong id, QSqlDatabase &db);
49     //logic deletes
50     static void deleteComicsFromFavorites(const QList<ComicDB> &comicsList, QSqlDatabase &db);
51     static void deleteComicsFromReading(const QList<ComicDB> &comicsList, QSqlDatabase &db);
52     static void deleteComicsFromLabel(const QList<ComicDB> &comicsList, qulonglong labelId, QSqlDatabase &db);
53     static void deleteComicsFromReadingList(const QList<ComicDB> &comicsList, qulonglong readingListId, QSqlDatabase &db);
54     //inserts
55     static qulonglong insert(Folder *folder, QSqlDatabase &db);
56     static qulonglong insert(ComicDB *comic, QSqlDatabase &db);
57     static qulonglong insertLabel(const QString &name, YACReader::LabelColors color, QSqlDatabase &db);
58     static qulonglong insertReadingList(const QString &name, QSqlDatabase &db);
59     static qulonglong insertReadingSubList(const QString &name, qulonglong parentId, int ordering, QSqlDatabase &db);
60     static void insertComicsInFavorites(const QList<ComicDB> &comicsList, QSqlDatabase &db);
61     static void insertComicsInLabel(const QList<ComicDB> &comicsList, qulonglong labelId, QSqlDatabase &db);
62     static void insertComicsInReadingList(const QList<ComicDB> &comicsList, qulonglong readingListId, QSqlDatabase &db);
63     //updates
64     static void update(qulonglong libraryId, ComicInfo &comicInfo);
65     static void update(ComicDB *comics, QSqlDatabase &db);
66     static void update(ComicInfo *comicInfo, QSqlDatabase &db);
67     static void updateRead(ComicInfo *comicInfo, QSqlDatabase &db);
68     static void update(const Folder &folder, QSqlDatabase &db);
69     static void updateChildrenInfo(const Folder &folder, QSqlDatabase &db);
70     static void updateChildrenInfo(qulonglong folderId, QSqlDatabase &db);
71     static void updateChildrenInfo(QSqlDatabase &db);
72     static void updateProgress(qulonglong libraryId, const ComicInfo &comicInfo);
73     static void setComicAsReading(qulonglong libraryId, const ComicInfo &comicInfo);
74     static void updateFromRemoteClient(qulonglong libraryId, const ComicInfo &comicInfo);
75     static void updateFromRemoteClientWithHash(const ComicInfo &comicInfo);
76     static void updateReadingRemoteProgress(const ComicInfo &comicInfo, QSqlDatabase &db);
77     static QMap<qulonglong, QList<ComicDB>> updateFromRemoteClient(const QMap<qulonglong, QList<ComicInfo>> &comics);
78     static void updateFromRemoteClientWithHash(const QList<ComicInfo> &comics);
79     static void renameLabel(qulonglong id, const QString &name, QSqlDatabase &db);
80     static void renameList(qulonglong id, const QString &name, QSqlDatabase &db);
81     static void reasignOrderToSublists(QList<qulonglong> ids, QSqlDatabase &db);
82     static void reasignOrderToComicsInFavorites(QList<qulonglong> comicIds, QSqlDatabase &db);
83     static void reasignOrderToComicsInLabel(qulonglong labelId, QList<qulonglong> comicIds, QSqlDatabase &db);
84     static void reasignOrderToComicsInReadingList(qulonglong readingListId, QList<qulonglong> comicIds, QSqlDatabase &db);
85 
86     static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase &db, bool sort = true);
87     static QList<ComicDB> getSortedComicsFromParent(qulonglong parentId, QSqlDatabase &db);
88     static QList<LibraryItem *> getComicsFromParent(qulonglong parentId, QSqlDatabase &db, bool sort = true);
89     static QList<Label> getLabels(qulonglong libraryId);
90 
91     static void updateFolderTreeManga(qulonglong id, QSqlDatabase &db, bool manga);
92 
93     //load
94     static Folder loadFolder(qulonglong id, QSqlDatabase &db);
95     static Folder loadFolder(const QString &folderName, qulonglong parentId, QSqlDatabase &db);
96     static ComicDB loadComic(qulonglong id, QSqlDatabase &db);
97     static ComicDB loadComic(QString cname, QString cpath, QString chash, QSqlDatabase &database);
98     static ComicInfo loadComicInfo(QString hash, QSqlDatabase &db);
99     static ComicInfo getComicInfoFromQuery(QSqlQuery &query, const QString &idKey = "id");
100     static QList<QString> loadSubfoldersNames(qulonglong folderId, QSqlDatabase &db);
101     //queries
102     static bool isFavoriteComic(qulonglong id, QSqlDatabase &db);
103 };
104 
105 #endif
106