private void PersistBackupObject <T>(T target, string filename, DataBackupConfiguration backupConfiguration) where T : class { var serializedObject = backupConfiguration.Serializer.SerializeObjectForBackup(target); var fullPath = _fileSystem.Path.Combine(backupConfiguration.BackupOutputFolder, filename); _fileSystem.File.WriteAllBytes(fullPath, serializedObject); }
private void RequireBackupFolder(DataBackupConfiguration backupConfiguration) { if (!_fileSystem.Directory.Exists(backupConfiguration.BackupOutputFolder)) { _fileSystem.Directory.CreateDirectory(backupConfiguration.BackupOutputFolder); } }
public void Backup(Answer answer, DataBackupConfiguration backupConfiguration) { RequireBackupFolder(backupConfiguration); var snapshot = AnswerSnapshot(answer); PersistBackupObject(snapshot, $"answer{answer.AnswerId}.{backupConfiguration.Serializer.Extension}", backupConfiguration); }
public async Task Backup(PangulDbContext db, Question question, DataBackupConfiguration backupConfiguration) { RequireBackupFolder(backupConfiguration); var snapshot = await QuestionSnapshot(db, question); PersistBackupObject(snapshot, $"question{question.QuestionId}.{backupConfiguration.Serializer.Extension}", backupConfiguration); }
public async Task PurgeExistingAnswer(PangulDbContext db, UserContext user, string answerId, DataBackupConfiguration backupConfiguration) { var answer = await _answerService.GetAnswer(db, user, answerId); if (answer == null) { throw new PangulCommandFailedException(CommandFailureType.MissingData, $"No such answer ({answerId})"); } await _internalUserPermissionService.RequireWriteAccessFor(answer, user); _backupService.Backup(answer, backupConfiguration); await _purgeAnswer.Execute(db, new PurgeAnswerData() { Answer = answer, UserContext = user }); }
public async Task PurgeExistingQuestion(PangulDbContext db, UserContext user, string questionId, DataBackupConfiguration backupConfiguration) { var question = await _questionService.GetQuestion(db, user, questionId); if (question == null) { throw new PangulCommandFailedException(CommandFailureType.MissingData, $"No such question ({questionId})"); } await _backupService.Backup(db, question, backupConfiguration); await _purgeQuestion.Execute(db, new PurgeQuestionData() { Question = question, UserContext = user }); }