#pragma once #include "token.h" #include "subject.h" #include "requestmanager.h" #include "databasemanager.h" #include #include #include class DataManager : public QObject { Q_OBJECT public: explicit DataManager(const bool& dryMode = false); void fillFullTokensColnod(const QString& jsonResponse); void fillTokensToUpdateColnod(const QString& jsonResponse); void fillSubjectsToUpdateColnod(const QString& jsonResponse); void fillSubjectsToDeleteColnod(const QString& jsonResponse); void fillTokensToDeleteColnod(const QString& jsonResponse); void fillTokensToChangeDB(); void fillSubjectsToUpdateDB(); void fillSubjectsToDeleteDB(); void filterTokensDB(); void filterTokensColnod(); void pushSubjectsToDB(); void pushTokensToDB(); void deleteSubjectsFromDB(); void setDeletedToTokensFromDB(); void updateLastSync(); void dropTables(); void createTables(); quint64 getLastModifiedOfToken(const QString &id); QHash> getTokensToUpdateFromColnod() {return tokensToUpdateFromColnodToDB;} QList getTokensToDeleteColnod() {return tokensFromColnodToDeleteFromDB;} QHash> getTokensToUpdateFromDB() {return tokensToUpdateFromDBToColnod;} QList getTokensToDeleteDB() {return tokensFromDBToDeleteFromColnod;} const quint64 &getLastSync() {return lastSync;} const quint64 &getCurrentSync() {return nextLastSync;} bool isDBOpened() {return db->isOpen();} public slots: void clear(); void setLastUpdate(); void setLastUpdate(const QString &id); signals: void error(); private: std::shared_ptr db; quint64 lastSync; // time of last run quint64 nextLastSync; // time of begin of this run QHash> allTokensFromColnodById; QHash> allTokensFromColnodByName; QHash> subjectsToUpdateFromColnodToDB; QHash> tokensToUpdateFromColnodToDB; QHash> subjectsDB; // in future QHash> tokensToUpdateFromDBToColnod; QList subjectsFromColnodToDeleteFromDB; QList tokensFromColnodToDeleteFromDB; QList subjectsToDeleteDB; QList tokensFromDBToDeleteFromColnod; bool dryMode = false; };