suggestion how to proceed with next steps ( prepare data )

Not validated  i cannot check anything remotely
This commit is contained in:
Filip Bucek 2019-11-28 14:20:11 +01:00
parent f9a0d26283
commit 7225ebe2ce
5 changed files with 52 additions and 4 deletions

View File

@ -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

View File

@ -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;
};

View File

@ -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;

View File

@ -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();

View File

@ -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"