From fc00461a517db33ca641e09a6987ed2d855729b3 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Wed, 22 Aug 2018 09:54:52 +0200 Subject: Fix readPrevious --- common/storage/entitystore.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp index c05470c..7776bfc 100644 --- a/common/storage/entitystore.cpp +++ b/common/storage/entitystore.cpp @@ -621,18 +621,8 @@ void EntityStore::readRevisions(qint64 baseRevision, const QByteArray &expectedT void EntityStore::readPrevious(const QByteArray &type, const Identifier &id, qint64 revision, const std::function callback) { - auto db = DataStore::mainDatabase(d->getTransaction(), type); - qint64 latestRevision = 0; - const auto internalUid = id.toInternalByteArray(); - db.scan(internalUid, - [&latestRevision, revision](const QByteArray &key, const QByteArray &) -> bool { - const auto foundRevision = Key::fromInternalByteArray(key).revision().toQint64(); - if (foundRevision < revision && foundRevision > latestRevision) { - latestRevision = foundRevision; - } - return true; - }, - [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Failed to read current value from storage: " << error.message; }, true); + const auto previousRevisions = DataStore::getRevisionsUntilFromUid(d->getTransaction(), id.toDisplayByteArray(), revision); + const size_t latestRevision = previousRevisions[previousRevisions.size() - 1]; const auto key = Key(id, latestRevision); readEntity(type, key.toDisplayByteArray(), callback); } -- cgit v1.2.3