diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2021-06-28 13:32:57 +0300 |
---|---|---|
committer | Matthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr> | 2021-07-06 17:03:53 +0300 |
commit | e7e218d8e69efdb1b40b9e290d235249e55bc750 (patch) | |
tree | b02539db9b6255e57dd34b6a0ced2cca39ce3a8b /src/common | |
parent | e852c516750067a6b73175ef7bb4335de7e50e99 (diff) |
Improve the error message returned by updateMetadata
Also properly handle the case the the file can't be converted to a placeholder
as it is locked
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/syncjournaldb.cpp | 10 | ||||
-rw-r--r-- | src/common/syncjournaldb.h | 2 | ||||
-rw-r--r-- | src/common/vfs.h | 11 |
3 files changed, 15 insertions, 8 deletions
diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index 579289df5..d2f880112 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -898,7 +898,7 @@ qint64 SyncJournalDb::getPHash(const QByteArray &file) return h; } -bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record) +Result<void, QString> SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record) { SyncJournalFileRecord record = _record; QMutexLocker locker(&_mutex); @@ -940,7 +940,7 @@ bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record) "INSERT OR REPLACE INTO metadata " "(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId, e2eMangledName, isE2eEncrypted) " "VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18);"), _db)) { - return false; + return _setFileRecordQuery.error(); } _setFileRecordQuery.bindValue(1, phash); @@ -963,16 +963,16 @@ bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record) _setFileRecordQuery.bindValue(18, record._isE2eEncrypted); if (!_setFileRecordQuery.exec()) { - return false; + return _setFileRecordQuery.error(); } // Can't be true anymore. _metadataTableIsEmpty = false; - return true; + return {}; } else { qCWarning(lcDb) << "Failed to connect database."; - return false; // checkConnect failed. + return tr("Failed to connect database."); // checkConnect failed. } } diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h index cbfa8d387..aa949752a 100644 --- a/src/common/syncjournaldb.h +++ b/src/common/syncjournaldb.h @@ -65,7 +65,7 @@ public: bool getFileRecordsByFileId(const QByteArray &fileId, const std::function<void(const SyncJournalFileRecord &)> &rowCallback); bool getFilesBelowPath(const QByteArray &path, const std::function<void(const SyncJournalFileRecord&)> &rowCallback); bool listFilesInPath(const QByteArray &path, const std::function<void(const SyncJournalFileRecord&)> &rowCallback); - bool setFileRecord(const SyncJournalFileRecord &record); + Result<void, QString> setFileRecord(const SyncJournalFileRecord &record); void keyValueStoreSet(const QString &key, QVariant value); qint64 keyValueStoreGetInt(const QString &key, qint64 defaultValue); diff --git a/src/common/vfs.h b/src/common/vfs.h index ba2c5c7af..1435f2633 100644 --- a/src/common/vfs.h +++ b/src/common/vfs.h @@ -104,6 +104,13 @@ public: XAttr, }; Q_ENUM(Mode) + enum class ConvertToPlaceholderResult { + Error, + Ok, + Locked + }; + Q_ENUM(ConvertToPlaceholderResult) + static QString modeToString(Mode mode); static Optional<Mode> modeFromString(const QString &str); @@ -197,7 +204,7 @@ public: * new placeholder shall supersede, for rename-replace actions with new downloads, * for example. */ - virtual Q_REQUIRED_RESULT Result<void, QString> convertToPlaceholder( + virtual Q_REQUIRED_RESULT Result<Vfs::ConvertToPlaceholderResult, QString> convertToPlaceholder( const QString &filename, const SyncFileItem &item, const QString &replacesFile = QString()) = 0; @@ -303,7 +310,7 @@ public: Result<void, QString> updateMetadata(const QString &, time_t, qint64, const QByteArray &) override { return {}; } Result<void, QString> createPlaceholder(const SyncFileItem &) override { return {}; } Result<void, QString> dehydratePlaceholder(const SyncFileItem &) override { return {}; } - Result<void, QString> convertToPlaceholder(const QString &, const SyncFileItem &, const QString &) override { return {}; } + Result<ConvertToPlaceholderResult, QString> convertToPlaceholder(const QString &, const SyncFileItem &, const QString &) override { return ConvertToPlaceholderResult::Ok; } bool needsMetadataUpdate(const SyncFileItem &) override { return false; } bool isDehydratedPlaceholder(const QString &) override { return false; } |