#pragma once #include "colnodapi.h" #include "databaseapi.h" #include "requestmanager.h" #include "datamanager.h" #include "logger.h" #include "colnodapi.h" #include "serversdk/databasemanager.h" class SyncManager : public QObject { Q_OBJECT // NEW public: bool init(); void run(); private: void downloadData(); void prepareData(); void processData(); private: Q_SLOTS void saveColnodData(std::shared_ptr data); Q_SLOTS void saveDatabaseData(std::shared_ptr data); Q_SLOTS void areDataReady(); signals: void dataReady(); void processDataFinished(); private: ColnodAPI colnod; DatabaseAPI database; serversdk::RequestManager reqMan; serversdk::DatabaseManager dbMan; Timestamp mlastSync; std::shared_ptr colnodData; std::shared_ptr databaseData; std::shared_ptr colnodDataToProcess; std::shared_ptr databaseDataToProcess; int dataAmount = 0; // OLD public: explicit SyncManager(bool dryMode = false); void syncDataFromColnodToDB(); void syncDataFromDBToColnod(); void dropTables(); void createTables(); bool isValid(); public slots: void loadDataFromColnod(); void loadDataFromDB(); signals: void dataReady(); void dataUpdatedToColnod(); void syncFinished(); void error(); private slots: private: void loadTokensFromColnod(); void loadUpdatedDataFromColnod(); void loadDeletedDataFromColnod(); void loadUpdatedDataFromDB(); void loadDeletedDataFromDB(); void syncUpdatedDataFromColnodToDB(); void syncDeletedDataFromColnodToDB(); void syncUpdatedDataFromDBToColnod(); void syncDeletedDataFromDBToColnod(); void areChangedDataReady(); void areDataUpdatedToColnod(); private: // std::unique_ptr reqMan; std::unique_ptr dataMan; bool dryMode = false; bool updateFinished = false; bool deleteFinished = false; int dataCounter = 0; };