diff options
Diffstat (limited to 'common/store.cpp')
-rw-r--r-- | common/store.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/common/store.cpp b/common/store.cpp index edca842..c102c45 100644 --- a/common/store.cpp +++ b/common/store.cpp | |||
@@ -297,13 +297,13 @@ KAsync::Job<void> Store::removeDataFromDisk(const QByteArray &identifier) | |||
297 | }); | 297 | }); |
298 | } | 298 | } |
299 | 299 | ||
300 | static KAsync::Job<void> upgrade(const QByteArray &resource) | 300 | static KAsync::Job<Store::UpgradeResult> upgrade(const QByteArray &resource) |
301 | { | 301 | { |
302 | SinkLog() << "Upgrading " << resource; | ||
303 | auto store = Sink::Storage::DataStore(Sink::storageLocation(), resource, Sink::Storage::DataStore::ReadOnly); | 302 | auto store = Sink::Storage::DataStore(Sink::storageLocation(), resource, Sink::Storage::DataStore::ReadOnly); |
304 | if (Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)) >= Sink::latestDatabaseVersion()) { | 303 | if (Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)) == Sink::latestDatabaseVersion()) { |
305 | return KAsync::null(); | 304 | return KAsync::value(Store::UpgradeResult{false}); |
306 | } | 305 | } |
306 | SinkLog() << "Upgrading " << resource; | ||
307 | 307 | ||
308 | auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource, ResourceConfig::getResourceType(resource)); | 308 | auto resourceAccess = ResourceAccessFactory::instance().getAccess(resource, ResourceConfig::getResourceType(resource)); |
309 | return resourceAccess->sendCommand(Sink::Commands::UpgradeCommand) | 309 | return resourceAccess->sendCommand(Sink::Commands::UpgradeCommand) |
@@ -315,18 +315,29 @@ static KAsync::Job<void> upgrade(const QByteArray &resource) | |||
315 | } | 315 | } |
316 | SinkTrace() << "Upgrade of resource " << resource << " complete."; | 316 | SinkTrace() << "Upgrade of resource " << resource << " complete."; |
317 | return KAsync::null(); | 317 | return KAsync::null(); |
318 | }); | 318 | }) |
319 | .then(KAsync::value(Store::UpgradeResult{true})); | ||
319 | } | 320 | } |
320 | 321 | ||
321 | KAsync::Job<void> Store::upgrade() | 322 | KAsync::Job<Store::UpgradeResult> Store::upgrade() |
322 | { | 323 | { |
323 | SinkLog() << "Upgrading..."; | 324 | SinkLog() << "Upgrading..."; |
325 | auto ret = QSharedPointer<bool>::create(false); | ||
324 | return fetchAll<ApplicationDomain::SinkResource>({}) | 326 | return fetchAll<ApplicationDomain::SinkResource>({}) |
325 | .template each([](const ApplicationDomain::SinkResource::Ptr &resource) -> KAsync::Job<void> { | 327 | .template each([ret](const ApplicationDomain::SinkResource::Ptr &resource) -> KAsync::Job<void> { |
326 | return Sink::upgrade(resource->identifier()); | 328 | return Sink::upgrade(resource->identifier()) |
329 | .then([ret](UpgradeResult returnValue) { | ||
330 | if (returnValue.upgradeExecuted) { | ||
331 | SinkLog() << "Upgrade executed."; | ||
332 | *ret = true; | ||
333 | } | ||
334 | }); | ||
327 | }) | 335 | }) |
328 | .then([] { | 336 | .then([ret] { |
329 | SinkLog() << "Upgrade complete."; | 337 | if (*ret) { |
338 | SinkLog() << "Upgrade complete."; | ||
339 | } | ||
340 | return Store::UpgradeResult{*ret}; | ||
330 | }); | 341 | }); |
331 | } | 342 | } |
332 | 343 | ||