From 479dfaf330ca0aaec110df7e115a385e3cd4f8a7 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 20 Feb 2018 10:08:20 -0800 Subject: [PATCH] Add corrupted backup status to domain content backup info --- domain-server/src/AssetsBackupHandler.cpp | 11 +++++++++++ domain-server/src/AssetsBackupHandler.h | 1 + domain-server/src/BackupHandler.h | 1 + domain-server/src/ContentSettingsBackupHandler.h | 3 +++ domain-server/src/DomainContentBackupManager.cpp | 6 +++++- domain-server/src/EntitiesBackupHandler.h | 2 ++ 6 files changed, 23 insertions(+), 1 deletion(-) diff --git a/domain-server/src/AssetsBackupHandler.cpp b/domain-server/src/AssetsBackupHandler.cpp index aa92b19f4c..4bd2d9b2c4 100644 --- a/domain-server/src/AssetsBackupHandler.cpp +++ b/domain-server/src/AssetsBackupHandler.cpp @@ -111,6 +111,17 @@ void AssetsBackupHandler::checkForAssetsToDelete() { } } +bool AssetsBackupHandler::isCorruptedBackup(const QString& filePath) { + auto it = find_if(begin(_backups), end(_backups), [&](const std::vector::value_type& value) { + return value.filePath == filePath; + }); + + if (it == end(_backups)) { + return false; + } + + return it->corruptedBackup; +} std::pair AssetsBackupHandler::isAvailable(const QString& backupName) { const auto it = find_if(begin(_backups), end(_backups), [&](const AssetServerBackup& backup) { diff --git a/domain-server/src/AssetsBackupHandler.h b/domain-server/src/AssetsBackupHandler.h index 1e9ae7cc38..d223e4f8f7 100644 --- a/domain-server/src/AssetsBackupHandler.h +++ b/domain-server/src/AssetsBackupHandler.h @@ -39,6 +39,7 @@ public: void recoverBackup(const QString& backupName, QuaZip& zip) override; void deleteBackup(const QString& backupName) override; void consolidateBackup(const QString& backupName, QuaZip& zip) override; + bool isCorruptedBackup(const QString& absoluteFilePath) override; bool operationInProgress() { return getRecoveryStatus().first; } diff --git a/domain-server/src/BackupHandler.h b/domain-server/src/BackupHandler.h index d3263fc3d3..1971db79df 100644 --- a/domain-server/src/BackupHandler.h +++ b/domain-server/src/BackupHandler.h @@ -32,6 +32,7 @@ public: virtual void recoverBackup(const QString& backupName, QuaZip& zip) = 0; virtual void deleteBackup(const QString& backupName) = 0; virtual void consolidateBackup(const QString& backupName, QuaZip& zip) = 0; + virtual bool isCorruptedBackup(const QString& absoluteFilePath) = 0; }; using BackupHandlerPointer = std::unique_ptr; diff --git a/domain-server/src/ContentSettingsBackupHandler.h b/domain-server/src/ContentSettingsBackupHandler.h index 1d8bbae617..e8bff3d12e 100644 --- a/domain-server/src/ContentSettingsBackupHandler.h +++ b/domain-server/src/ContentSettingsBackupHandler.h @@ -31,6 +31,9 @@ public: void deleteBackup(const QString& backupName) override {} void consolidateBackup(const QString& backupName, QuaZip& zip) override {} + + bool isCorruptedBackup(const QString& absoluteFilePath) override { return true; } + private: DomainServerSettingsManager& _settingsManager; }; diff --git a/domain-server/src/DomainContentBackupManager.cpp b/domain-server/src/DomainContentBackupManager.cpp index a218ee87ea..23064862e5 100644 --- a/domain-server/src/DomainContentBackupManager.cpp +++ b/domain-server/src/DomainContentBackupManager.cpp @@ -363,6 +363,7 @@ void DomainContentBackupManager::getAllBackupsAndStatus(MiniPromise::Promise pro for (auto& backup : backups) { bool isAvailable { true }; + bool isCorrupted { false }; float availabilityProgress { 0.0f }; for (auto& handler : _backupHandlers) { bool handlerIsAvailable { true }; @@ -370,6 +371,8 @@ void DomainContentBackupManager::getAllBackupsAndStatus(MiniPromise::Promise pro std::tie(handlerIsAvailable, progress) = handler->isAvailable(backup.id); isAvailable &= handlerIsAvailable; availabilityProgress += progress / _backupHandlers.size(); + + isCorrupted = isCorrupted || handler->isCorruptedBackup(backup.absolutePath); } variantBackups.push_back(QVariantMap({ { "id", backup.id }, @@ -377,7 +380,8 @@ void DomainContentBackupManager::getAllBackupsAndStatus(MiniPromise::Promise pro { "createdAtMillis", backup.createdAt.toMSecsSinceEpoch() }, { "isAvailable", isAvailable }, { "availabilityProgress", availabilityProgress }, - { "isManualBackup", backup.isManualBackup } + { "isManualBackup", backup.isManualBackup }, + { "isCorrupted", isCorrupted } })); } diff --git a/domain-server/src/EntitiesBackupHandler.h b/domain-server/src/EntitiesBackupHandler.h index 7c018c9d2d..1b524b4d90 100644 --- a/domain-server/src/EntitiesBackupHandler.h +++ b/domain-server/src/EntitiesBackupHandler.h @@ -35,6 +35,8 @@ public: // Create a full backup void consolidateBackup(const QString& backupName, QuaZip& zip) override {} + bool isCorruptedBackup(const QString& absoluteFilePath) override { return false; } + private: QString _entitiesFilePath; QString _entitiesReplacementFilePath;