From 62e7084dcd6f53275fcb21ba17e880e41b40094d Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 23 Aug 2015 18:53:36 +0200 Subject: Duplicate settings as part of opening db. --- common/storage.h | 2 +- common/storage_lmdb.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'common') 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: bool commit(const std::function &errorHandler = std::function()); void abort(); - NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), const std::function &errorHandler = std::function()) const; + NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), const std::function &errorHandler = std::function(), bool allowDuplicates = false) const; Transaction(Transaction&& other) : d(other.d) { 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() d->transaction = nullptr; } -Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, const std::function &errorHandler) const +Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db, const std::function &errorHandler, bool allowDuplicates) const { if (!d) { return Storage::NamedDatabase(); } //We don't now if anything changed d->implicitCommit = true; - auto p = new Storage::NamedDatabase::Private(db, d->allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); + auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); if (!p->openDatabase(d->requestedRead, errorHandler)) { return Storage::NamedDatabase(); delete p; @@ -345,7 +345,7 @@ bool Storage::Transaction::write(const QByteArray &key, const QByteArray &value, d->error = true; errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); }; - openDatabase("default", eHandler).write(key, value, eHandler); + openDatabase("default", eHandler, d->allowDuplicates).write(key, value, eHandler); d->implicitCommit = true; return !d->error; @@ -358,7 +358,7 @@ void Storage::Transaction::remove(const QByteArray &k, d->error = true; errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); }; - openDatabase("default", eHandler).remove(k, eHandler); + openDatabase("default", eHandler, d->allowDuplicates).remove(k, eHandler); d->implicitCommit = true; } @@ -366,7 +366,7 @@ int Storage::Transaction::scan(const QByteArray &k, const std::function &resultHandler, const std::function &errorHandler) const { - auto db = openDatabase("default"); + auto db = openDatabase("default", std::function(), d->allowDuplicates); if (db) { return db.scan(k, resultHandler, errorHandler); } -- cgit v1.2.3