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