Update backup delete to not break rolling backups and remove unused asset files

This commit is contained in:
Ryan Huffman 2018-02-16 13:07:17 -08:00
parent 218edf878e
commit efa55c0a63
7 changed files with 24 additions and 10 deletions

View file

@ -306,7 +306,7 @@ void AssetsBackupHandler::recoverBackup(QuaZip& zip) {
restoreAllAssets();
}
void AssetsBackupHandler::deleteBackup(QuaZip& zip) {
void AssetsBackupHandler::deleteBackup(const QString& absoluteFilePath) {
Q_ASSERT(QThread::currentThread() == thread());
if (operationInProgress()) {
@ -315,10 +315,10 @@ void AssetsBackupHandler::deleteBackup(QuaZip& zip) {
}
auto it = find_if(begin(_backups), end(_backups), [&](const std::vector<AssetServerBackup>::value_type& value) {
return value.filePath == zip.getZipName();
return value.filePath == absoluteFilePath;
});
if (it == end(_backups)) {
qCDebug(asset_backup) << "Could not find backup" << zip.getZipName() << "to delete.";
qCDebug(asset_backup) << "Could not find backup" << absoluteFilePath << "to delete.";
return;
}

View file

@ -37,7 +37,7 @@ public:
void loadBackup(QuaZip& zip) override;
void createBackup(QuaZip& zip) override;
void recoverBackup(QuaZip& zip) override;
void deleteBackup(QuaZip& zip) override;
void deleteBackup(const QString& absoluteFilePath) override;
void consolidateBackup(QuaZip& zip) override;
bool operationInProgress() { return getRecoveryStatus().first; }

View file

@ -30,7 +30,7 @@ public:
virtual void loadBackup(QuaZip& zip) = 0;
virtual void createBackup(QuaZip& zip) = 0;
virtual void recoverBackup(QuaZip& zip) = 0;
virtual void deleteBackup(QuaZip& zip) = 0;
virtual void deleteBackup(const QString& absoluteFilePath) = 0;
virtual void consolidateBackup(QuaZip& zip) = 0;
};
using BackupHandlerPointer = std::unique_ptr<BackupHandlerInterface>;

View file

@ -28,7 +28,7 @@ public:
void recoverBackup(QuaZip& zip) override;
void deleteBackup(QuaZip& zip) override {}
void deleteBackup(const QString& absoluteFilePath) override {}
void consolidateBackup(QuaZip& zip) override {}
private:

View file

@ -89,8 +89,7 @@ void DomainContentBackupManager::parseSettings(const QJsonObject& settings) {
}
auto name = obj["Name"].toString();
auto format = obj["format"].toString();
format = name.replace(" ", "_").toLower();
auto format = name.replace(" ", "_").toLower();
qCDebug(domain_server) << " Name:" << name;
qCDebug(domain_server) << " format:" << format;
@ -116,6 +115,12 @@ void DomainContentBackupManager::parseSettings(const QJsonObject& settings) {
}
}
void DomainContentBackupManager::refreshBackupRules() {
for (auto& backup : _backupRules) {
backup.lastBackupSeconds = getMostRecentBackupTimeInSecs(backup.extensionFormat);
}
}
int64_t DomainContentBackupManager::getMostRecentBackupTimeInSecs(const QString& format) {
int64_t mostRecentBackupInSecs = 0;
@ -235,8 +240,16 @@ void DomainContentBackupManager::deleteBackup(MiniPromise::Promise promise, cons
}
QDir backupDir { _backupDirectory };
QFile backupFile { backupDir.filePath(backupName) };
auto absoluteFilePath { backupDir.filePath(backupName) };
QFile backupFile { absoluteFilePath };
auto success = backupFile.remove();
refreshBackupRules();
for (auto& handler : _backupHandlers) {
handler->deleteBackup(absoluteFilePath);
}
promise->resolve({
{ "success", success }
});

View file

@ -68,6 +68,7 @@ protected:
void load();
void backup();
void removeOldBackupVersions(const BackupRule& rule);
void refreshBackupRules();
bool getMostRecentBackup(const QString& format, QString& mostRecentBackupFileName, QDateTime& mostRecentBackupTime);
int64_t getMostRecentBackupTimeInSecs(const QString& format);
void parseSettings(const QJsonObject& settings);

View file

@ -30,7 +30,7 @@ public:
void recoverBackup(QuaZip& zip) override;
// Delete a skeleton backup
void deleteBackup(QuaZip& zip) override {}
void deleteBackup(const QString& absoluteFilePath) override {}
// Create a full backup
void consolidateBackup(QuaZip& zip) override {}