From 7225ebe2ce42e5b3fb0a350ea27b60c3fe43acea Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Thu, 28 Nov 2019 14:20:11 +0100 Subject: [PATCH] suggestion how to proceed with next steps ( prepare data ) Not validated i cannot check anything remotely --- src/colnod/colnodapi.cpp | 7 +++++++ src/colnod/data.h | 6 ++++++ src/colnod/syncmanager.cpp | 20 +++++++++++++++++--- src/colnod/syncmanager.h | 13 +++++++++++++ test/auto/syncmanager/tst_syncmanager.cpp | 10 +++++++++- 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 4340c8b..906fb0b 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -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) { // Have to get Login diff --git a/src/colnod/data.h b/src/colnod/data.h index 340c9eb..41a2491 100644 --- a/src/colnod/data.h +++ b/src/colnod/data.h @@ -37,3 +37,9 @@ public: QList deletedSubjects; }; +class PreparedData +{ + // TODO: make unique_ptr ( neeed because of ColnodAPI ) + std::shared_ptr databaseData; + std::shared_ptr colnodData; +}; diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 9cf9cb3..5244796 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -66,16 +66,25 @@ bool SyncManager::startSynchronization() connect(colnod.get(), &ColnodAPI::downloadDataFinished, [=](std::shared_ptr data) { if (!data) { qCritical(syncmanager) << "Not possible to get correct data from colnod"; + QCoreApplication::exit(-1); return; } - - - // NOW I HAVE DATA FROM COLNOD + // NOW I SHOULD HAVE VALID DATA FROM COLNOD // I can process data qDebug(syncmanager) << "I have colnod and database data"; qDebug(syncmanager) << "updated token count" << data->updatedTokens.count(); + std::unique_ptr 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; @@ -121,6 +130,11 @@ bool SyncManager::startSynchronization() return true; } +std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr &databaseData, const std::shared_ptr &colnodData) +{ + return nullptr; +} + bool SyncManager::downloadData() { bool res = true; diff --git a/src/colnod/syncmanager.h b/src/colnod/syncmanager.h index 07c92e0..5fbfa31 100644 --- a/src/colnod/syncmanager.h +++ b/src/colnod/syncmanager.h @@ -8,12 +8,25 @@ 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: bool downloadData(); bool prepareData(); diff --git a/test/auto/syncmanager/tst_syncmanager.cpp b/test/auto/syncmanager/tst_syncmanager.cpp index ad97eff..ff3fbaf 100644 --- a/test/auto/syncmanager/tst_syncmanager.cpp +++ b/test/auto/syncmanager/tst_syncmanager.cpp @@ -8,16 +8,24 @@ class SyncManagerTest : public QObject Q_OBJECT private slots: void sync_init_test(); + void prepareData_test(); }; void SyncManagerTest::sync_init_test() { SyncManager sync(true); - QVERIFY(sync.databaseInitialization()); } +void SyncManagerTest::prepareData_test() +{ + SyncManager sync(true); + auto dbData = std::make_shared(); + auto colnodData = std::make_shared(); + QVERIFY2(sync.prepareDataNew(dbData, colnodData), "finish unitest"); +} + QTEST_MAIN(SyncManagerTest) #include "tst_syncmanager.moc"