Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private void RequireBackupFolder(DataBackupConfiguration backupConfiguration)
 {
     if (!_fileSystem.Directory.Exists(backupConfiguration.BackupOutputFolder))
     {
         _fileSystem.Directory.CreateDirectory(backupConfiguration.BackupOutputFolder);
     }
 }
Exemplo n.º 3
0
        public void Backup(Answer answer, DataBackupConfiguration backupConfiguration)
        {
            RequireBackupFolder(backupConfiguration);
            var snapshot = AnswerSnapshot(answer);

            PersistBackupObject(snapshot, $"answer{answer.AnswerId}.{backupConfiguration.Serializer.Extension}", backupConfiguration);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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
            });
        }
Exemplo n.º 6
0
        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
            });
        }