forked from ondra/colnod-connector
113 lines
2.0 KiB
C++
113 lines
2.0 KiB
C++
#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> data);
|
|
Q_SLOTS void saveDatabaseData(std::shared_ptr<Data> 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<Data> colnodData;
|
|
std::shared_ptr<Data> databaseData;
|
|
|
|
std::shared_ptr<Data> colnodDataToProcess;
|
|
std::shared_ptr<Data> 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<RequestManager> reqMan;
|
|
std::unique_ptr<DataManager> dataMan;
|
|
bool dryMode = false;
|
|
bool updateFinished = false;
|
|
bool deleteFinished = false;
|
|
int dataCounter = 0;
|
|
};
|
|
|