From 53015d839aa99536a8d5be7a3a8c301d9cc10430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 15:16:34 +0100 Subject: [PATCH] WIP: prepare data --- src/colnod/syncmanager.cpp | 46 +++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 7278037..4d7ed4d 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -149,27 +149,53 @@ std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr< if (databaseData->updatedTokens.value(colnodToken->id()) < colnodToken) { preperedColnodData->updatedTokens.insert(colnodToken->id(), colnodToken); } - - // updated in db later - if (databaseData->updatedTokens.value(colnodToken->id()) > colnodToken) { - conflicts.append(colnodToken->id()); - } + else { + conflicts.append(colnodToken->id()); } + auto token = database->getToken(colnodToken->id()); if ( token ) // alredy synced ( tokens are same ) if (token == colnodToken) alreadySynced.append(colnodToken->id()); } - // remove tokens which should be not updated - for (const auto &id : conflicts) - colnodData->updatedTokens.remove(id); - for (const auto &id : alreadySynced) - colnodData->updatedTokens.remove(id); + + for (const auto &id : colnodData->deletedTokens) { + if (!database->isAlreadyDeleted(id)) { + preperedColnodData->deletedTokens.append(id); + } + } qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:"; qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN DATABASE TOO"; qInfo(syncmanager) << tab << tab << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED"; + qInfo(syncmanager) << tab << tab << colnodData->updatedTokens.size() - preperedColnodData->deletedTokens.size() << "TOKENS WERE ALREADY DELETED"; + qInfo(syncmanager) << dash; + + for (const auto &databaseToken : databaseData->updatedTokens) { + if (!colnodData->updatedTokens.contains(databaseToken->id())) { + preperedDatabaseData->updatedTokens.insert(databaseToken->id(), databaseToken); + } + if (databaseToken < colnodData->updatedTokens.value(databaseToken->id())) + conflicts.append(databaseToken->id()); + } + else { + // restriction cauesed by colnod rest api + if (databaseToken->description() != "mobile") { + qCritical(syncmanager) << "Token:" << databaseToken->id() << "doesn't have 'mobile' in description, can't be "; + conflicts.append(databaseToken->id()); + } + } + } + for (const auto &id : conflicts) + colnodData->updatedTokens.remove(id); + + qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:"; + qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN IN COLNOD TOO"; + qInfo(syncmanager) << dash; + + qInfo(syncmanager) << "PREPARING DATA -> FINISHED"; + qInfo(syncmanager) << equals; return nullptr; }