diff options
-rw-r--r-- | common/storage.h | 2 | ||||
-rw-r--r-- | common/storage_lmdb.cpp | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/common/storage.h b/common/storage.h index 2f7a2df..4b0604e 100644 --- a/common/storage.h +++ b/common/storage.h | |||
@@ -113,7 +113,7 @@ public: | |||
113 | bool commit(const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 113 | bool commit(const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); |
114 | void abort(); | 114 | void abort(); |
115 | 115 | ||
116 | NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()) const; | 116 | NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>(), bool allowDuplicates = false) const; |
117 | 117 | ||
118 | Transaction(Transaction&& other) : d(other.d) | 118 | Transaction(Transaction&& other) : d(other.d) |
119 | { | 119 | { |
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index 3e7c962..13755bb 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp | |||
@@ -324,14 +324,14 @@ void Storage::Transaction::abort() | |||
324 | d->transaction = nullptr; | 324 | d->transaction = nullptr; |
325 | } | 325 | } |
326 | 326 | ||
327 | Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, const std::function<void(const Storage::Error &error)> &errorHandler) const | 327 | Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, const std::function<void(const Storage::Error &error)> &errorHandler, bool allowDuplicates) const |
328 | { | 328 | { |
329 | if (!d) { | 329 | if (!d) { |
330 | return Storage::NamedDatabase(); | 330 | return Storage::NamedDatabase(); |
331 | } | 331 | } |
332 | //We don't now if anything changed | 332 | //We don't now if anything changed |
333 | d->implicitCommit = true; | 333 | d->implicitCommit = true; |
334 | auto p = new Storage::NamedDatabase::Private(db, d->allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); | 334 | auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); |
335 | if (!p->openDatabase(d->requestedRead, errorHandler)) { | 335 | if (!p->openDatabase(d->requestedRead, errorHandler)) { |
336 | return Storage::NamedDatabase(); | 336 | return Storage::NamedDatabase(); |
337 | delete p; | 337 | delete p; |
@@ -345,7 +345,7 @@ bool Storage::Transaction::write(const QByteArray &key, const QByteArray &value, | |||
345 | d->error = true; | 345 | d->error = true; |
346 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); | 346 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); |
347 | }; | 347 | }; |
348 | openDatabase("default", eHandler).write(key, value, eHandler); | 348 | openDatabase("default", eHandler, d->allowDuplicates).write(key, value, eHandler); |
349 | d->implicitCommit = true; | 349 | d->implicitCommit = true; |
350 | 350 | ||
351 | return !d->error; | 351 | return !d->error; |
@@ -358,7 +358,7 @@ void Storage::Transaction::remove(const QByteArray &k, | |||
358 | d->error = true; | 358 | d->error = true; |
359 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); | 359 | errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); |
360 | }; | 360 | }; |
361 | openDatabase("default", eHandler).remove(k, eHandler); | 361 | openDatabase("default", eHandler, d->allowDuplicates).remove(k, eHandler); |
362 | d->implicitCommit = true; | 362 | d->implicitCommit = true; |
363 | } | 363 | } |
364 | 364 | ||
@@ -366,7 +366,7 @@ int Storage::Transaction::scan(const QByteArray &k, | |||
366 | const std::function<bool(const QByteArray &key, const QByteArray &value)> &resultHandler, | 366 | const std::function<bool(const QByteArray &key, const QByteArray &value)> &resultHandler, |
367 | const std::function<void(const Storage::Error &error)> &errorHandler) const | 367 | const std::function<void(const Storage::Error &error)> &errorHandler) const |
368 | { | 368 | { |
369 | auto db = openDatabase("default"); | 369 | auto db = openDatabase("default", std::function<void(const Storage::Error &error)>(), d->allowDuplicates); |
370 | if (db) { | 370 | if (db) { |
371 | return db.scan(k, resultHandler, errorHandler); | 371 | return db.scan(k, resultHandler, errorHandler); |
372 | } | 372 | } |