diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 14da4e8..863b283 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -271,7 +271,7 @@ void ColnodAPI::setUserName(const QString &userName) mUserName = userName; } -void ColnodAPI::areDataReady(const std::shared_ptr& data) +void ColnodAPI::areDataReady(const std::shared_ptr &data) { if (++amountData == 4) { diff --git a/src/colnod/databaseapi.cpp b/src/colnod/databaseapi.cpp index 25d23db..163ccbd 100644 --- a/src/colnod/databaseapi.cpp +++ b/src/colnod/databaseapi.cpp @@ -184,7 +184,7 @@ void DatabaseAPI::initNewTokens() uploadTokens(tokensToInit); } -bool DatabaseAPI::uploadTokens(const QHash> &tokens) +bool DatabaseAPI::uploadTokens(const QHash> &tokens, const QSet &filters) { // TODO: first check if OK, then message // OK -> token was updated @@ -194,8 +194,9 @@ bool DatabaseAPI::uploadTokens(const QHash> &tok // Get token if (exists(token->id(), "colnod_token")) { - query = utils->updateTable(token.get(), "colnod_token"); - qInfo(database).noquote() << Message::massageTemplate("Updating", "token", "database", token->name()); + query = utils->updateTable(token.get(), "colnod_token", filters); + if (filters.contains("last_modified")) + qInfo(database).noquote() << Message::massageTemplate("Updating", "token", "database", token->name()); } else { // TODO: first check if OK, then message diff --git a/src/colnod/databaseapi.h b/src/colnod/databaseapi.h index dfb48c1..3e8ab84 100644 --- a/src/colnod/databaseapi.h +++ b/src/colnod/databaseapi.h @@ -38,7 +38,7 @@ public: void initNewTokens(); // process data - bool uploadTokens(const QHash > &tokens); + bool uploadTokens(const QHash > &tokens, const QSet &filters = {}); bool uploadSubjects(const QHash > &subjects); bool deleteItems(const QList &ids, const QString &tableName); diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 6322d24..ade9e16 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -87,7 +87,7 @@ bool SyncManager::startSynchronization() qInfo(syncmanager) << "Push changes to both Colnod and Database:"; qInfo(syncmanager) << dash; - if (!database->processData(preparedData->databaseData)) { + if (!database->processData(preparedData->colnodData)) { qCritical(syncmanager) << "Not possible to upload data to database"; } @@ -100,21 +100,25 @@ bool SyncManager::startSynchronization() Timestamp time; time.setTimestamp(syncBegin); - database->reupdateDeleted(preparedData->databaseData->deletedTokens); // download data changes in this sync - colnod->getTokensUpdated(time); + auto tokensRequest = colnod->getTokensUpdated(time); // updated data are ready - connect(colnod.get(), &ColnodAPI::partOfDataReady, [=](const std::shared_ptr &uploadedData){ + connect(tokensRequest.get(), &serversdk::Request::finished, [=](){ + auto uploadedData = std::make_shared(); + uploadedData->loadTokensFromJson(tokensRequest->responseData()); + if (!uploadedData) { qCritical(syncmanager) << "Not possible to get correct data from colnod"; QCoreApplication::exit(-1); return; } - if (!database->uploadTokens(uploadedData->updatedTokens)) { + if (!database->uploadTokens(uploadedData->updatedTokens, {"lastModified"})) { qCritical(syncmanager) << "Not possible to upload data to database"; + QCoreApplication::exit(-1); + return; } - database->reupdateDeleted(uploadedData->deletedTokens); + database->reupdateDeleted(databaseData->deletedTokens); if (!database->isValid() || !colnod->isValid()) { qWarning(syncmanager) << "Synchronization was unsuccessful, next run of sync will be with same last sync time, check warnings"; @@ -135,7 +139,8 @@ bool SyncManager::startSynchronization() }); - colnod->processData(preparedData->colnodData); + colnod->processData(preparedData->databaseData); // TODO: errors??? + //qCritical(syncmanager) << "Not possible to upload data to colnod"; }); @@ -217,7 +222,7 @@ std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr< } qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:"; - qInfo(syncmanager) << tab << tab << databaseData->updatedTokens.size() - preparedColnodData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED IN COLNOD AFTER"; + qInfo(syncmanager) << tab << tab << databaseData->updatedTokens.size() - preparedDatabaseData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED IN COLNOD AFTER"; qInfo(syncmanager) << dash; qInfo(syncmanager) << "PREPARING DATA -> FINISHED";