summaryrefslogtreecommitdiffstats
path: root/common/storage/entitystore.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 21:31:00 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-05-17 21:31:00 +0200
commitd23f414fe907fd382c387f9e6c627c217e68440f (patch)
tree82e1d762e210c6853093eb6ff1df6560cf04973b /common/storage/entitystore.cpp
parent1be1218612b339b1fee745d8189b78b975d8b1a9 (diff)
downloadsink-d23f414fe907fd382c387f9e6c627c217e68440f.tar.gz
sink-d23f414fe907fd382c387f9e6c627c217e68440f.zip
A lot less namespace typing.
Diffstat (limited to 'common/storage/entitystore.cpp')
-rw-r--r--common/storage/entitystore.cpp56
1 files changed, 28 insertions, 28 deletions
diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp
index 4560b13..6a71c39 100644
--- a/common/storage/entitystore.cpp
+++ b/common/storage/entitystore.cpp
@@ -107,7 +107,7 @@ public:
107 107
108 bool exists() 108 bool exists()
109 { 109 {
110 return Sink::Storage::DataStore(Sink::storageLocation(), resourceContext.instanceId(), DataStore::ReadOnly).exists(); 110 return DataStore(Sink::storageLocation(), resourceContext.instanceId(), DataStore::ReadOnly).exists();
111 } 111 }
112 112
113 DataStore::Transaction &getTransaction() 113 DataStore::Transaction &getTransaction()
@@ -116,7 +116,7 @@ public:
116 return transaction; 116 return transaction;
117 } 117 }
118 118
119 Sink::Storage::DataStore store(Sink::storageLocation(), dbLayout(resourceContext.instanceId()), DataStore::ReadOnly); 119 DataStore store(Sink::storageLocation(), dbLayout(resourceContext.instanceId()), DataStore::ReadOnly);
120 transaction = store.createTransaction(DataStore::ReadOnly); 120 transaction = store.createTransaction(DataStore::ReadOnly);
121 return transaction; 121 return transaction;
122 } 122 }
@@ -147,10 +147,10 @@ public:
147 return index; 147 return index;
148 } 148 }
149 149
150 ApplicationDomain::ApplicationDomainType createApplicationDomainType(const QByteArray &type, const QByteArray &uid, qint64 revision, const EntityBuffer &buffer) 150 ApplicationDomainType createApplicationDomainType(const QByteArray &type, const QByteArray &uid, qint64 revision, const EntityBuffer &buffer)
151 { 151 {
152 auto adaptor = resourceContext.adaptorFactory(type).createAdaptor(buffer.entity(), &typeIndex(type)); 152 auto adaptor = resourceContext.adaptorFactory(type).createAdaptor(buffer.entity(), &typeIndex(type));
153 return ApplicationDomain::ApplicationDomainType{resourceContext.instanceId(), uid, revision, adaptor}; 153 return ApplicationDomainType{resourceContext.instanceId(), uid, revision, adaptor};
154 } 154 }
155}; 155};
156 156
@@ -168,22 +168,22 @@ void EntityStore::initialize()
168 //This is required to be able to set the database version only in the case where we create a new database. 168 //This is required to be able to set the database version only in the case where we create a new database.
169 if (!Storage::DataStore::exists(Sink::storageLocation(), d->resourceContext.instanceId())) { 169 if (!Storage::DataStore::exists(Sink::storageLocation(), d->resourceContext.instanceId())) {
170 //The first time we open the environment we always want it to be read/write. Otherwise subsequent tries to open a write transaction will fail. 170 //The first time we open the environment we always want it to be read/write. Otherwise subsequent tries to open a write transaction will fail.
171 startTransaction(Sink::Storage::DataStore::ReadWrite); 171 startTransaction(DataStore::ReadWrite);
172 //Create the database with the correct version if it wasn't existing before 172 //Create the database with the correct version if it wasn't existing before
173 SinkLogCtx(d->logCtx) << "Creating resource database."; 173 SinkLogCtx(d->logCtx) << "Creating resource database.";
174 Storage::DataStore::setDatabaseVersion(d->transaction, Sink::latestDatabaseVersion()); 174 Storage::DataStore::setDatabaseVersion(d->transaction, Sink::latestDatabaseVersion());
175 } else { 175 } else {
176 //The first time we open the environment we always want it to be read/write. Otherwise subsequent tries to open a write transaction will fail. 176 //The first time we open the environment we always want it to be read/write. Otherwise subsequent tries to open a write transaction will fail.
177 startTransaction(Sink::Storage::DataStore::ReadWrite); 177 startTransaction(DataStore::ReadWrite);
178 } 178 }
179 commitTransaction(); 179 commitTransaction();
180} 180}
181 181
182void EntityStore::startTransaction(Sink::Storage::DataStore::AccessMode accessMode) 182void EntityStore::startTransaction(DataStore::AccessMode accessMode)
183{ 183{
184 SinkTraceCtx(d->logCtx) << "Starting transaction: " << accessMode; 184 SinkTraceCtx(d->logCtx) << "Starting transaction: " << accessMode;
185 Q_ASSERT(!d->transaction); 185 Q_ASSERT(!d->transaction);
186 d->transaction = Sink::Storage::DataStore(Sink::storageLocation(), dbLayout(d->resourceContext.instanceId()), accessMode).createTransaction(accessMode); 186 d->transaction = DataStore(Sink::storageLocation(), dbLayout(d->resourceContext.instanceId()), accessMode).createTransaction(accessMode);
187} 187}
188 188
189void EntityStore::commitTransaction() 189void EntityStore::commitTransaction()
@@ -211,7 +211,7 @@ bool EntityStore::hasTransaction() const
211 return d->transaction; 211 return d->transaction;
212} 212}
213 213
214bool EntityStore::add(const QByteArray &type, ApplicationDomain::ApplicationDomainType entity, bool replayToSource) 214bool EntityStore::add(const QByteArray &type, ApplicationDomainType entity, bool replayToSource)
215{ 215{
216 if (entity.identifier().isEmpty()) { 216 if (entity.identifier().isEmpty()) {
217 SinkWarningCtx(d->logCtx) << "Can't write entity with an empty identifier"; 217 SinkWarningCtx(d->logCtx) << "Can't write entity with an empty identifier";
@@ -247,7 +247,7 @@ bool EntityStore::add(const QByteArray &type, ApplicationDomain::ApplicationDoma
247 return true; 247 return true;
248} 248}
249 249
250ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &current, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const 250ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomainType &current, const ApplicationDomainType &diff, const QByteArrayList &deletions) const
251{ 251{
252 auto newEntity = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(current, current.availableProperties()); 252 auto newEntity = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(current, current.availableProperties());
253 253
@@ -271,7 +271,7 @@ ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray
271 return newEntity; 271 return newEntity;
272} 272}
273 273
274bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions, bool replayToSource) 274bool EntityStore::modify(const QByteArray &type, const ApplicationDomainType &diff, const QByteArrayList &deletions, bool replayToSource)
275{ 275{
276 const auto current = readLatest(type, diff.identifier()); 276 const auto current = readLatest(type, diff.identifier());
277 if (current.identifier().isEmpty()) { 277 if (current.identifier().isEmpty()) {
@@ -283,7 +283,7 @@ bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::Applic
283 return modify(type, current, newEntity, replayToSource); 283 return modify(type, current, newEntity, replayToSource);
284} 284}
285 285
286bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &current, ApplicationDomain::ApplicationDomainType newEntity, bool replayToSource) 286bool EntityStore::modify(const QByteArray &type, const ApplicationDomainType &current, ApplicationDomainType newEntity, bool replayToSource)
287{ 287{
288 SinkTraceCtx(d->logCtx) << "Modified entity: " << newEntity; 288 SinkTraceCtx(d->logCtx) << "Modified entity: " << newEntity;
289 289
@@ -321,7 +321,7 @@ bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::Applic
321 return true; 321 return true;
322} 322}
323 323
324bool EntityStore::remove(const QByteArray &type, const Sink::ApplicationDomain::ApplicationDomainType &current, bool replayToSource) 324bool EntityStore::remove(const QByteArray &type, const ApplicationDomainType &current, bool replayToSource)
325{ 325{
326 const auto uid = current.identifier(); 326 const auto uid = current.identifier();
327 if (!exists(type, uid)) { 327 if (!exists(type, uid)) {
@@ -398,7 +398,7 @@ bool EntityStore::cleanupRevisions(qint64 revision)
398 Q_ASSERT(d->exists()); 398 Q_ASSERT(d->exists());
399 bool implicitTransaction = false; 399 bool implicitTransaction = false;
400 if (!d->transaction) { 400 if (!d->transaction) {
401 startTransaction(Sink::Storage::DataStore::ReadWrite); 401 startTransaction(DataStore::ReadWrite);
402 Q_ASSERT(d->transaction); 402 Q_ASSERT(d->transaction);
403 implicitTransaction = true; 403 implicitTransaction = true;
404 } 404 }
@@ -492,7 +492,7 @@ void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, cons
492 [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Error during query: " << error.message << uid; }); 492 [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Error during query: " << error.message << uid; });
493} 493}
494 494
495void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) 495void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &)> callback)
496{ 496{
497 readLatest(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) { 497 readLatest(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) {
498 //TODO cache max revision for the duration of the transaction. 498 //TODO cache max revision for the duration of the transaction.
@@ -500,7 +500,7 @@ void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, cons
500 }); 500 });
501} 501}
502 502
503void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &, Sink::Operation)> callback) 503void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &, Sink::Operation)> callback)
504{ 504{
505 readLatest(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) { 505 readLatest(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) {
506 //TODO cache max revision for the duration of the transaction. 506 //TODO cache max revision for the duration of the transaction.
@@ -510,8 +510,8 @@ void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, cons
510 510
511ApplicationDomain::ApplicationDomainType EntityStore::readLatest(const QByteArray &type, const QByteArray &uid) 511ApplicationDomain::ApplicationDomainType EntityStore::readLatest(const QByteArray &type, const QByteArray &uid)
512{ 512{
513 ApplicationDomain::ApplicationDomainType dt; 513 ApplicationDomainType dt;
514 readLatest(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) { 514 readLatest(type, uid, [&](const ApplicationDomainType &entity) {
515 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties()); 515 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
516 }); 516 });
517 return dt; 517 return dt;
@@ -528,7 +528,7 @@ void EntityStore::readEntity(const QByteArray &type, const QByteArray &key, cons
528 [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Error during query: " << error.message << key; }); 528 [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Error during query: " << error.message << key; });
529} 529}
530 530
531void EntityStore::readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) 531void EntityStore::readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &)> callback)
532{ 532{
533 readEntity(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) { 533 readEntity(type, uid, [&](const QByteArray &uid, const EntityBuffer &buffer) {
534 callback(d->createApplicationDomainType(type, uid, DataStore::maxRevision(d->getTransaction()), buffer)); 534 callback(d->createApplicationDomainType(type, uid, DataStore::maxRevision(d->getTransaction()), buffer));
@@ -537,15 +537,15 @@ void EntityStore::readEntity(const QByteArray &type, const QByteArray &uid, cons
537 537
538ApplicationDomain::ApplicationDomainType EntityStore::readEntity(const QByteArray &type, const QByteArray &uid) 538ApplicationDomain::ApplicationDomainType EntityStore::readEntity(const QByteArray &type, const QByteArray &uid)
539{ 539{
540 ApplicationDomain::ApplicationDomainType dt; 540 ApplicationDomainType dt;
541 readEntity(type, uid, [&](const ApplicationDomain::ApplicationDomainType &entity) { 541 readEntity(type, uid, [&](const ApplicationDomainType &entity) {
542 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties()); 542 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
543 }); 543 });
544 return dt; 544 return dt;
545} 545}
546 546
547 547
548void EntityStore::readAll(const QByteArray &type, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> &callback) 548void EntityStore::readAll(const QByteArray &type, const std::function<void(const ApplicationDomainType &entity)> &callback)
549{ 549{
550 readAllUids(type, [&] (const QByteArray &uid) { 550 readAllUids(type, [&] (const QByteArray &uid) {
551 readLatest(type, uid, callback); 551 readLatest(type, uid, callback);
@@ -580,17 +580,17 @@ void EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qi
580 qint64 latestRevision = 0; 580 qint64 latestRevision = 0;
581 db.scan(uid, 581 db.scan(uid,
582 [&latestRevision, revision](const QByteArray &key, const QByteArray &) -> bool { 582 [&latestRevision, revision](const QByteArray &key, const QByteArray &) -> bool {
583 const auto foundRevision = Sink::Storage::DataStore::revisionFromKey(key); 583 const auto foundRevision = DataStore::revisionFromKey(key);
584 if (foundRevision < revision && foundRevision > latestRevision) { 584 if (foundRevision < revision && foundRevision > latestRevision) {
585 latestRevision = foundRevision; 585 latestRevision = foundRevision;
586 } 586 }
587 return true; 587 return true;
588 }, 588 },
589 [&](const Sink::Storage::DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Failed to read current value from storage: " << error.message; }, true); 589 [&](const DataStore::Error &error) { SinkWarningCtx(d->logCtx) << "Failed to read current value from storage: " << error.message; }, true);
590 readEntity(type, Sink::Storage::DataStore::assembleKey(uid, latestRevision), callback); 590 readEntity(type, DataStore::assembleKey(uid, latestRevision), callback);
591} 591}
592 592
593void EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) 593void EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const ApplicationDomainType &)> callback)
594{ 594{
595 readPrevious(type, uid, revision, [&](const QByteArray &uid, const EntityBuffer &buffer) { 595 readPrevious(type, uid, revision, [&](const QByteArray &uid, const EntityBuffer &buffer) {
596 callback(d->createApplicationDomainType(type, uid, DataStore::maxRevision(d->getTransaction()), buffer)); 596 callback(d->createApplicationDomainType(type, uid, DataStore::maxRevision(d->getTransaction()), buffer));
@@ -599,8 +599,8 @@ void EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qi
599 599
600ApplicationDomain::ApplicationDomainType EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision) 600ApplicationDomain::ApplicationDomainType EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision)
601{ 601{
602 ApplicationDomain::ApplicationDomainType dt; 602 ApplicationDomainType dt;
603 readPrevious(type, uid, revision, [&](const ApplicationDomain::ApplicationDomainType &entity) { 603 readPrevious(type, uid, revision, [&](const ApplicationDomainType &entity) {
604 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties()); 604 dt = *ApplicationDomainType::getInMemoryRepresentation<ApplicationDomainType>(entity, entity.availableProperties());
605 }); 605 });
606 return dt; 606 return dt;