forked from ondra/colnod-connector
suggestion how to proceed with next steps ( prepare data )
Not validated i cannot check anything remotely
This commit is contained in:
parent
f9a0d26283
commit
7225ebe2ce
@ -14,6 +14,13 @@ ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan, const qint64 &lastSync,
|
|||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Downloads new data from Colnod -> emits downloadDataFinished signal
|
||||||
|
* @param time
|
||||||
|
*
|
||||||
|
* @return signal with nullptr when something went wrong
|
||||||
|
* @return signal with data when valid data returned
|
||||||
|
*/
|
||||||
void ColnodAPI::downloadData(const Timestamp &time)
|
void ColnodAPI::downloadData(const Timestamp &time)
|
||||||
{
|
{
|
||||||
// Have to get Login
|
// Have to get Login
|
||||||
|
|||||||
@ -37,3 +37,9 @@ public:
|
|||||||
QList<QString> deletedSubjects;
|
QList<QString> deletedSubjects;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PreparedData
|
||||||
|
{
|
||||||
|
// TODO: make unique_ptr ( neeed because of ColnodAPI )
|
||||||
|
std::shared_ptr<Data> databaseData;
|
||||||
|
std::shared_ptr<Data> colnodData;
|
||||||
|
};
|
||||||
|
|||||||
@ -66,16 +66,25 @@ bool SyncManager::startSynchronization()
|
|||||||
connect(colnod.get(), &ColnodAPI::downloadDataFinished, [=](std::shared_ptr<Data> data) {
|
connect(colnod.get(), &ColnodAPI::downloadDataFinished, [=](std::shared_ptr<Data> data) {
|
||||||
if (!data) {
|
if (!data) {
|
||||||
qCritical(syncmanager) << "Not possible to get correct data from colnod";
|
qCritical(syncmanager) << "Not possible to get correct data from colnod";
|
||||||
|
QCoreApplication::exit(-1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOW I SHOULD HAVE VALID DATA FROM COLNOD
|
||||||
|
|
||||||
// NOW I HAVE DATA FROM COLNOD
|
|
||||||
// I can process data
|
// I can process data
|
||||||
qDebug(syncmanager) << "I have colnod and database data";
|
qDebug(syncmanager) << "I have colnod and database data";
|
||||||
qDebug(syncmanager) << "updated token count" << data->updatedTokens.count();
|
qDebug(syncmanager) << "updated token count" << data->updatedTokens.count();
|
||||||
|
|
||||||
|
std::unique_ptr<PreparedData> preparedData = prepareDataNew(databaseData, colnodData);
|
||||||
|
if (!preparedData) {
|
||||||
|
qCritical(syncmanager) << "Not possible to get correct data from colnod";
|
||||||
|
QCoreApplication::exit(-1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
colnod->processData(preparedData->colnodData);
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -121,6 +130,11 @@ bool SyncManager::startSynchronization()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<Data> &databaseData, const std::shared_ptr<Data> &colnodData)
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool SyncManager::downloadData()
|
bool SyncManager::downloadData()
|
||||||
{
|
{
|
||||||
bool res = true;
|
bool res = true;
|
||||||
|
|||||||
@ -8,12 +8,25 @@ Q_DECLARE_LOGGING_CATEGORY(syncmanager)
|
|||||||
class SyncManager : public QObject
|
class SyncManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
friend class SyncManagerTest;
|
||||||
public:
|
public:
|
||||||
explicit SyncManager(bool dryMode);
|
explicit SyncManager(bool dryMode);
|
||||||
|
|
||||||
bool databaseInitialization();
|
bool databaseInitialization();
|
||||||
bool startSynchronization();
|
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<PreparedData> prepareDataNew(const std::shared_ptr<Data> &databaseData, const std::shared_ptr<Data> &colnodData);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool downloadData();
|
bool downloadData();
|
||||||
bool prepareData();
|
bool prepareData();
|
||||||
|
|||||||
@ -8,16 +8,24 @@ class SyncManagerTest : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private slots:
|
private slots:
|
||||||
void sync_init_test();
|
void sync_init_test();
|
||||||
|
void prepareData_test();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void SyncManagerTest::sync_init_test()
|
void SyncManagerTest::sync_init_test()
|
||||||
{
|
{
|
||||||
SyncManager sync(true);
|
SyncManager sync(true);
|
||||||
|
|
||||||
QVERIFY(sync.databaseInitialization());
|
QVERIFY(sync.databaseInitialization());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SyncManagerTest::prepareData_test()
|
||||||
|
{
|
||||||
|
SyncManager sync(true);
|
||||||
|
auto dbData = std::make_shared<Data>();
|
||||||
|
auto colnodData = std::make_shared<Data>();
|
||||||
|
QVERIFY2(sync.prepareDataNew(dbData, colnodData), "finish unitest");
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(SyncManagerTest)
|
QTEST_MAIN(SyncManagerTest)
|
||||||
|
|
||||||
#include "tst_syncmanager.moc"
|
#include "tst_syncmanager.moc"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user