#pragma once #include "colnodapi.h" #include "databaseapi.h" Q_DECLARE_LOGGING_CATEGORY(syncmanager) class SyncManager : public QObject { Q_OBJECT friend class SyncManagerTest; public: explicit SyncManager(bool dryMode); bool databaseInitialization(); bool startSynchronization(); // New approach private: /** * @brief Preapre data to be pushed to database and colnod from actual downloaded data * @param data from database * @param data from colnod * @return prepared data to be pushed into colnod and db * * @todo rename when removed old aproach */ std::unique_ptr prepareDataNew(const std::shared_ptr &databaseData, const std::shared_ptr &colnodData); private: void initNewToken(std::shared_ptr token); bool prepareData(); bool processData(); void updateLastUpdate(qint64 syncBegin); private: Q_SLOT void saveColnodData(const std::shared_ptr &data); Q_SLOT void saveDatabaseData(const std::shared_ptr &data); Q_SLOT void areDataReady(); signals: void dataReady(); void dataProcessFinished(); void syncFinished(); void error(); private: std::shared_ptr colnod; std::shared_ptr database; serversdk::RequestManager reqMan; serversdk::DatabaseManager dbMan; Timestamp mlastSync; int dataAmount = 0; bool mDryMode; std::function onError = nullptr; };