diff options
-rw-r--r-- | common/storage/entitystore.cpp | 56 | ||||
-rw-r--r-- | common/storage/entitystore.h | 30 |
2 files changed, 43 insertions, 43 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 | ||
182 | void EntityStore::startTransaction(Sink::Storage::DataStore::AccessMode accessMode) | 182 | void 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 | ||
189 | void EntityStore::commitTransaction() | 189 | void EntityStore::commitTransaction() |
@@ -211,7 +211,7 @@ bool EntityStore::hasTransaction() const | |||
211 | return d->transaction; | 211 | return d->transaction; |
212 | } | 212 | } |
213 | 213 | ||
214 | bool EntityStore::add(const QByteArray &type, ApplicationDomain::ApplicationDomainType entity, bool replayToSource) | 214 | bool 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 | ||
250 | ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const | 250 | ApplicationDomain::ApplicationDomainType EntityStore::applyDiff(const QByteArray &type, const ApplicationDomainType ¤t, 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 | ||
274 | bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions, bool replayToSource) | 274 | bool 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 | ||
286 | bool EntityStore::modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, ApplicationDomain::ApplicationDomainType newEntity, bool replayToSource) | 286 | bool EntityStore::modify(const QByteArray &type, const ApplicationDomainType ¤t, 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 | ||
324 | bool EntityStore::remove(const QByteArray &type, const Sink::ApplicationDomain::ApplicationDomainType ¤t, bool replayToSource) | 324 | bool EntityStore::remove(const QByteArray &type, const ApplicationDomainType ¤t, 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 | ||
495 | void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) | 495 | void 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 | ||
503 | void EntityStore::readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &, Sink::Operation)> callback) | 503 | void 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 | ||
511 | ApplicationDomain::ApplicationDomainType EntityStore::readLatest(const QByteArray &type, const QByteArray &uid) | 511 | ApplicationDomain::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 | ||
531 | void EntityStore::readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) | 531 | void 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 | ||
538 | ApplicationDomain::ApplicationDomainType EntityStore::readEntity(const QByteArray &type, const QByteArray &uid) | 538 | ApplicationDomain::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 | ||
548 | void EntityStore::readAll(const QByteArray &type, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> &callback) | 548 | void 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 | ||
593 | void EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const ApplicationDomain::ApplicationDomainType &)> callback) | 593 | void 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 | ||
600 | ApplicationDomain::ApplicationDomainType EntityStore::readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision) | 600 | ApplicationDomain::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; |
diff --git a/common/storage/entitystore.h b/common/storage/entitystore.h index c89c095..d79a0b5 100644 --- a/common/storage/entitystore.h +++ b/common/storage/entitystore.h | |||
@@ -44,12 +44,12 @@ public: | |||
44 | void initialize(); | 44 | void initialize(); |
45 | 45 | ||
46 | //Only the pipeline may call the following functions outside of tests | 46 | //Only the pipeline may call the following functions outside of tests |
47 | bool add(const QByteArray &type, ApplicationDomain::ApplicationDomainType newEntity, bool replayToSource); | 47 | bool add(const QByteArray &type, ApplicationDomainType newEntity, bool replayToSource); |
48 | bool modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions, bool replayToSource); | 48 | bool modify(const QByteArray &type, const ApplicationDomainType &diff, const QByteArrayList &deletions, bool replayToSource); |
49 | bool modify(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, ApplicationDomain::ApplicationDomainType newEntity, bool replayToSource); | 49 | bool modify(const QByteArray &type, const ApplicationDomainType ¤t, ApplicationDomainType newEntity, bool replayToSource); |
50 | bool remove(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, bool replayToSource); | 50 | bool remove(const QByteArray &type, const ApplicationDomainType ¤t, bool replayToSource); |
51 | bool cleanupRevisions(qint64 revision); | 51 | bool cleanupRevisions(qint64 revision); |
52 | ApplicationDomain::ApplicationDomainType applyDiff(const QByteArray &type, const ApplicationDomain::ApplicationDomainType ¤t, const ApplicationDomain::ApplicationDomainType &diff, const QByteArrayList &deletions) const; | 52 | ApplicationDomainType applyDiff(const QByteArray &type, const ApplicationDomainType ¤t, const ApplicationDomainType &diff, const QByteArrayList &deletions) const; |
53 | 53 | ||
54 | void startTransaction(Sink::Storage::DataStore::AccessMode); | 54 | void startTransaction(Sink::Storage::DataStore::AccessMode); |
55 | void commitTransaction(); | 55 | void commitTransaction(); |
@@ -68,12 +68,12 @@ public: | |||
68 | ///Returns the uid and buffer. Note that the memory only remains valid until the next operation or transaction end. | 68 | ///Returns the uid and buffer. Note that the memory only remains valid until the next operation or transaction end. |
69 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); | 69 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); |
70 | ///Returns an entity. Note that the memory only remains valid until the next operation or transaction end. | 70 | ///Returns an entity. Note that the memory only remains valid until the next operation or transaction end. |
71 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> callback); | 71 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &entity)> callback); |
72 | ///Returns an entity and operation. Note that the memory only remains valid until the next operation or transaction end. | 72 | ///Returns an entity and operation. Note that the memory only remains valid until the next operation or transaction end. |
73 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> callback); | 73 | void readLatest(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &entity, Sink::Operation)> callback); |
74 | 74 | ||
75 | ///Returns a copy | 75 | ///Returns a copy |
76 | ApplicationDomain::ApplicationDomainType readLatest(const QByteArray &type, const QByteArray &uid); | 76 | ApplicationDomainType readLatest(const QByteArray &type, const QByteArray &uid); |
77 | 77 | ||
78 | template<typename T> | 78 | template<typename T> |
79 | T readLatest(const QByteArray &uid) { | 79 | T readLatest(const QByteArray &uid) { |
@@ -83,9 +83,9 @@ public: | |||
83 | ///Returns the uid and buffer. Note that the memory only remains valid until the next operation or transaction end. | 83 | ///Returns the uid and buffer. Note that the memory only remains valid until the next operation or transaction end. |
84 | void readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); | 84 | void readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); |
85 | ///Returns an entity. Note that the memory only remains valid until the next operation or transaction end. | 85 | ///Returns an entity. Note that the memory only remains valid until the next operation or transaction end. |
86 | void readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> callback); | 86 | void readEntity(const QByteArray &type, const QByteArray &uid, const std::function<void(const ApplicationDomainType &entity)> callback); |
87 | ///Returns a copy | 87 | ///Returns a copy |
88 | ApplicationDomain::ApplicationDomainType readEntity(const QByteArray &type, const QByteArray &key); | 88 | ApplicationDomainType readEntity(const QByteArray &type, const QByteArray &key); |
89 | 89 | ||
90 | template<typename T> | 90 | template<typename T> |
91 | T readEntity(const QByteArray &key) { | 91 | T readEntity(const QByteArray &key) { |
@@ -94,9 +94,9 @@ public: | |||
94 | 94 | ||
95 | 95 | ||
96 | void readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); | 96 | void readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const QByteArray &uid, const EntityBuffer &entity)> callback); |
97 | void readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> callback); | 97 | void readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision, const std::function<void(const ApplicationDomainType &entity)> callback); |
98 | ///Returns a copy | 98 | ///Returns a copy |
99 | ApplicationDomain::ApplicationDomainType readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision); | 99 | ApplicationDomainType readPrevious(const QByteArray &type, const QByteArray &uid, qint64 revision); |
100 | 100 | ||
101 | template<typename T> | 101 | template<typename T> |
102 | T readPrevious(const QByteArray &uid, qint64 revision) { | 102 | T readPrevious(const QByteArray &uid, qint64 revision) { |
@@ -105,11 +105,11 @@ public: | |||
105 | 105 | ||
106 | void readAllUids(const QByteArray &type, const std::function<void(const QByteArray &uid)> callback); | 106 | void readAllUids(const QByteArray &type, const std::function<void(const QByteArray &uid)> callback); |
107 | 107 | ||
108 | void readAll(const QByteArray &type, const std::function<void(const ApplicationDomain::ApplicationDomainType &entity)> &callback); | 108 | void readAll(const QByteArray &type, const std::function<void(const ApplicationDomainType &entity)> &callback); |
109 | 109 | ||
110 | template<typename T> | 110 | template<typename T> |
111 | void readAll(const std::function<void(const T &entity)> &callback) { | 111 | void readAll(const std::function<void(const T &entity)> &callback) { |
112 | return readAll(ApplicationDomain::getTypeName<T>(), [&](const ApplicationDomain::ApplicationDomainType &entity) { | 112 | return readAll(ApplicationDomain::getTypeName<T>(), [&](const ApplicationDomainType &entity) { |
113 | callback(T(entity)); | 113 | callback(T(entity)); |
114 | }); | 114 | }); |
115 | } | 115 | } |
@@ -131,7 +131,7 @@ private: | |||
131 | * Remove any old revisions of the same entity up until @param revision | 131 | * Remove any old revisions of the same entity up until @param revision |
132 | */ | 132 | */ |
133 | void cleanupEntityRevisionsUntil(qint64 revision); | 133 | void cleanupEntityRevisionsUntil(qint64 revision); |
134 | void copyBlobs(ApplicationDomain::ApplicationDomainType &entity, qint64 newRevision); | 134 | void copyBlobs(ApplicationDomainType &entity, qint64 newRevision); |
135 | class Private; | 135 | class Private; |
136 | const QSharedPointer<Private> d; | 136 | const QSharedPointer<Private> d; |
137 | }; | 137 | }; |