WIP: prepare data

This commit is contained in:
Ondřej Fischer 2019-11-28 15:16:34 +01:00
parent 0dea65a0b6
commit 53015d839a

View File

@ -149,27 +149,53 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
if (databaseData->updatedTokens.value(colnodToken->id()) < colnodToken) { if (databaseData->updatedTokens.value(colnodToken->id()) < colnodToken) {
preperedColnodData->updatedTokens.insert(colnodToken->id(), colnodToken); preperedColnodData->updatedTokens.insert(colnodToken->id(), colnodToken);
} }
else {
// updated in db later
if (databaseData->updatedTokens.value(colnodToken->id()) > colnodToken) {
conflicts.append(colnodToken->id()); conflicts.append(colnodToken->id());
} }
}
auto token = database->getToken(colnodToken->id()); auto token = database->getToken(colnodToken->id());
if ( token ) if ( token )
// alredy synced ( tokens are same ) // alredy synced ( tokens are same )
if (token == colnodToken) if (token == colnodToken)
alreadySynced.append(colnodToken->id()); alreadySynced.append(colnodToken->id());
} }
// remove tokens which should be not updated
for (const auto &id : conflicts) for (const auto &id : colnodData->deletedTokens) {
colnodData->updatedTokens.remove(id); if (!database->isAlreadyDeleted(id)) {
for (const auto &id : alreadySynced) preperedColnodData->deletedTokens.append(id);
colnodData->updatedTokens.remove(id); }
}
qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:"; qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:";
qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN DATABASE TOO"; 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 << 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; return nullptr;
} }