diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-01-30 11:27:33 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-01-30 15:28:55 +0100 |
commit | 33029ab13cdb378e2b4a0886a591fb02a5cb2b65 (patch) | |
tree | 1ffffda4f125fd4989856a9610d5843f5d097135 /common/genericresource.cpp | |
parent | f675a280ad48a9a2ba7b38f81cf0dfdafb3a96b5 (diff) | |
download | sink-33029ab13cdb378e2b4a0886a591fb02a5cb2b65.tar.gz sink-33029ab13cdb378e2b4a0886a591fb02a5cb2b65.zip |
Support for storage upgrades
Diffstat (limited to 'common/genericresource.cpp')
-rw-r--r-- | common/genericresource.cpp | 27 |
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 | ||
59 | bool 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 | |||
59 | void GenericResource::setupPreprocessors(const QByteArray &type, const QVector<Sink::Preprocessor *> &preprocessors) | 86 | void GenericResource::setupPreprocessors(const QByteArray &type, const QVector<Sink::Preprocessor *> &preprocessors) |
60 | { | 87 | { |
61 | mPipeline->setPreprocessors(type, preprocessors); | 88 | mPipeline->setPreprocessors(type, preprocessors); |