Beispiel #1
0
        public async Task <RestoreStatus> RestoreAsync(Guid clientId, int backupId)
        {
            return(await Task.Run(async() =>
            {
                var status = RestoreStatus.InProgress;
                var startTime = DateTime.UtcNow;
                var restore = new Restore(backupId, DateTime.UtcNow, DateTime.UtcNow, clientId, status);
                await _restoreRepository.Insert(restore);

                try
                {
                    var backup = await _backupRepository.Get(backupId);

                    await _backupRestoreFileManager.RestoreFromBackupFileAsync(backup.BackupPath);
                    status = RestoreStatus.Success;
                    restore.UpdateStatus(status);
                }
                catch (Exception e)
                {
                    status = RestoreStatus.Failure;
                    restore.UpdateStatus(status);
                    await _restoreRepository.Update(restore);
                }

                await _restoreRepository.Update(restore);
                return status;
            }));
        }