summaryrefslogtreecommitdiffstats
path: root/common/genericresource.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-30 11:27:33 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-30 15:28:55 +0100
commit33029ab13cdb378e2b4a0886a591fb02a5cb2b65 (patch)
tree1ffffda4f125fd4989856a9610d5843f5d097135 /common/genericresource.cpp
parentf675a280ad48a9a2ba7b38f81cf0dfdafb3a96b5 (diff)
downloadsink-33029ab13cdb378e2b4a0886a591fb02a5cb2b65.tar.gz
sink-33029ab13cdb378e2b4a0886a591fb02a5cb2b65.zip
Support for storage upgrades
Diffstat (limited to 'common/genericresource.cpp')
-rw-r--r--common/genericresource.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/common/genericresource.cpp b/common/genericresource.cpp
index 00d7d0c..8d27e04 100644
--- a/common/genericresource.cpp
+++ b/common/genericresource.cpp
@@ -56,6 +56,33 @@ void GenericResource::setSecret(const QString &s)
56 } 56 }
57} 57}
58 58
59bool GenericResource::checkForUpgrade()
60{
61 const auto currentDatabaseVersion = [&] {
62 auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadOnly);
63 return Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly));
64 }();
65 if (currentDatabaseVersion < Sink::latestDatabaseVersion()) {
66 SinkLog() << "Starting database upgrade from " << currentDatabaseVersion << " to " << Sink::latestDatabaseVersion();
67
68 //Right now upgrading just means removing all local storage so we will resync
69 Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadWrite).removeFromDisk();
70 Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId() + ".userqueue", Sink::Storage::DataStore::ReadWrite).removeFromDisk();
71 Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId() + ".synchronizerqueue", Sink::Storage::DataStore::ReadWrite).removeFromDisk();
72 Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId() + ".changereplay", Sink::Storage::DataStore::ReadWrite).removeFromDisk();
73 Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId() + ".synchronization", Sink::Storage::DataStore::ReadWrite).removeFromDisk();
74
75 {
76 auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadWrite);
77 auto t = store.createTransaction(Storage::DataStore::ReadWrite);
78 Storage::DataStore::setDatabaseVersion(t, Sink::latestDatabaseVersion());
79 }
80 SinkLog() << "Finished database upgrade to " << Sink::latestDatabaseVersion();
81 return true;
82 }
83 return false;
84}
85
59void GenericResource::setupPreprocessors(const QByteArray &type, const QVector<Sink::Preprocessor *> &preprocessors) 86void GenericResource::setupPreprocessors(const QByteArray &type, const QVector<Sink::Preprocessor *> &preprocessors)
60{ 87{
61 mPipeline->setPreprocessors(type, preprocessors); 88 mPipeline->setPreprocessors(type, preprocessors);