summaryrefslogtreecommitdiffstats
path: root/common/store.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/store.cpp')
-rw-r--r--common/store.cpp31
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
300static KAsync::Job<void> upgrade(const QByteArray &resource) 300static 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
321KAsync::Job<void> Store::upgrade() 322KAsync::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