From: Felix Weilbach Date: Tue, 16 Nov 2021 11:11:08 +0000 (+0100) Subject: Refactor key-value store query code X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~18^2~106^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9e792369b291352dfbd9952cf7dd2a9e12c6fb82;p=nextcloud-desktop.git Refactor key-value store query code Signed-off-by: Felix Weilbach --- diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index 8c41aec63..9d1fd8fb6 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -996,69 +996,42 @@ void SyncJournalDb::keyValueStoreSet(const QString &key, QVariant value) qint64 SyncJournalDb::keyValueStoreGetInt(const QString &key, qint64 defaultValue) { - QMutexLocker locker(&_mutex); - if (!checkConnect()) { - return defaultValue; - } - - const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, QByteArrayLiteral("SELECT value FROM key_value_store WHERE key = ?1;"), _db); - if (!query) { - return defaultValue; - } - - query->bindValue(1, key); - query->exec(); - - if (!query->next().hasData) { - return defaultValue; + const auto sqlQuery = keyValueStoreExecuteSelectQuery(key); + if (sqlQuery.isValid()) { + return sqlQuery.get()->int64Value(0); } - - return query->int64Value(0); + return defaultValue; } -bool SyncJournalDb::keyValueStoreGetBool(const QString &key, bool defaultValue) +bool SyncJournalDb::keyValueStoreGetBool(const QString &key, const bool defaultValue) { - QMutexLocker locker(&_mutex); - if (!checkConnect()) { - return defaultValue; - } - - const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, - QByteArrayLiteral("SELECT value FROM key_value_store WHERE key = ?1;"), _db); - if (!query) { - return defaultValue; - } - - query->bindValue(1, key); - query->exec(); - - if (!query->next().hasData) { - return defaultValue; + const auto sqlQuery = keyValueStoreExecuteSelectQuery(key); + if (sqlQuery.isValid()) { + return sqlQuery.get()->intValue(0); } - - return query->intValue(0); + return defaultValue; } -QVariant SyncJournalDb::keyValueStoreGet(const QString &key, QVariant defaultValue) +OCC::Optional SyncJournalDb::keyValueStoreExecuteSelectQuery(const QString &key) { QMutexLocker locker(&_mutex); if (!checkConnect()) { - return defaultValue; + return {}; } const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, QByteArrayLiteral("SELECT value FROM key_value_store WHERE key = ?1;"), _db); if (!query) { - return defaultValue; + return {}; } query->bindValue(1, key); query->exec(); if (!query->next().hasData) { - return defaultValue; + return {}; } - return query->stringValue(0); + return query; } void SyncJournalDb::keyValueStoreDelete(const QString &key) diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h index 9a3db7125..9c90b4908 100644 --- a/src/common/syncjournaldb.h +++ b/src/common/syncjournaldb.h @@ -70,8 +70,7 @@ public: void keyValueStoreSet(const QString &key, QVariant value); qint64 keyValueStoreGetInt(const QString &key, qint64 defaultValue); - bool keyValueStoreGetBool(const QString &key, bool defaultValue); - QVariant keyValueStoreGet(const QString &key, QVariant defaultValue = {}); + bool keyValueStoreGetBool(const QString &key, const bool defaultValue); void keyValueStoreDelete(const QString &key); bool deleteFileRecord(const QString &filename, bool recursively = false); @@ -373,6 +372,7 @@ public: int autotestFailCounter = -1; private: + OCC::Optional keyValueStoreExecuteSelectQuery(const QString &key); int getFileRecordCount(); bool updateDatabaseStructure(); bool updateMetadataTableStructure();