properly query sync journal DB to know when to run fix for VFS
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 18 Nov 2021 14:47:04 +0000 (15:47 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Fri, 19 Nov 2021 13:19:04 +0000 (14:19 +0100)
the new method added to query the db is not working and so the fix for
vfs is executed at each sync run

the new method for bool was not really needed so let's just remove it
(and that will make the usage of SqlQuery be correct

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/common/syncjournaldb.cpp
src/common/syncjournaldb.h
src/gui/folder.cpp

index 9d1fd8fb60f90fea5cbded681cc647a2a642d0fa..0b66a6cc08c341f5ae28ca82d8016212038e868b 100644 (file)
@@ -995,43 +995,26 @@ void SyncJournalDb::keyValueStoreSet(const QString &key, QVariant value)
 }
 
 qint64 SyncJournalDb::keyValueStoreGetInt(const QString &key, qint64 defaultValue)
-{
-    const auto sqlQuery = keyValueStoreExecuteSelectQuery(key);
-    if (sqlQuery.isValid()) {
-        return sqlQuery.get()->int64Value(0);
-    }
-    return defaultValue;
-}
-
-bool SyncJournalDb::keyValueStoreGetBool(const QString &key, const bool defaultValue)
-{
-    const auto sqlQuery = keyValueStoreExecuteSelectQuery(key);
-    if (sqlQuery.isValid()) {
-        return sqlQuery.get()->intValue(0);
-    }
-    return defaultValue;
-}
-
-OCC::Optional<PreparedSqlQuery> SyncJournalDb::keyValueStoreExecuteSelectQuery(const QString &key)
 {
     QMutexLocker locker(&_mutex);
     if (!checkConnect()) {
-        return {};
+        return defaultValue;
     }
 
-    const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, QByteArrayLiteral("SELECT value FROM key_value_store WHERE key = ?1;"), _db);
+    const auto query = _queryManager.get(PreparedSqlQueryManager::GetKeyValueStoreQuery, QByteArrayLiteral("SELECT value FROM key_value_store WHERE key=?1"), _db);
     if (!query) {
-        return {};
+        return defaultValue;
     }
 
     query->bindValue(1, key);
     query->exec();
+    auto result = query->next();
 
-    if (!query->next().hasData) {
-        return {};
+    if (!result.ok || !result.hasData) {
+        return defaultValue;
     }
 
-    return query;
+    return query->int64Value(0);
 }
 
 void SyncJournalDb::keyValueStoreDelete(const QString &key)
index 9c90b49085b7ab2825bfd5337be19b054c3ca9ac..d51919f49e664e88c55d642f7c8a0e9590b49a51 100644 (file)
@@ -70,7 +70,6 @@ public:
 
     void keyValueStoreSet(const QString &key, QVariant value);
     qint64 keyValueStoreGetInt(const QString &key, qint64 defaultValue);
-    bool keyValueStoreGetBool(const QString &key, const bool defaultValue);
     void keyValueStoreDelete(const QString &key);
 
     bool deleteFileRecord(const QString &filename, bool recursively = false);
@@ -372,7 +371,6 @@ public:
     int autotestFailCounter = -1;
 
 private:
-    OCC::Optional<PreparedSqlQuery> keyValueStoreExecuteSelectQuery(const QString &key);
     int getFileRecordCount();
     bool updateDatabaseStructure();
     bool updateMetadataTableStructure();
index 39e4d37a9024f6108a5521accb5aedfb905914c6..33a1634d9f0c286a832d2176f70eb80b1f354d6d 100644 (file)
@@ -879,7 +879,7 @@ void Folder::correctPlaceholderFiles()
         return;
     }
     static const auto placeholdersCorrectedKey = QStringLiteral("placeholders_corrected");
-    const auto placeholdersCorrected = _journal.keyValueStoreGetBool(placeholdersCorrectedKey, false);
+    const auto placeholdersCorrected = _journal.keyValueStoreGetInt(placeholdersCorrectedKey, 0);
     if (!placeholdersCorrected) {
         qCDebug(lcFolder) << "Make sure all virtual files are placeholder files";
         switchToVirtualFiles();