protected override async Task<DatabaseTaskOutcome> RunImplementation() { if (includeDocuments == false && includeAttachements == false && includeIndexes == false && includeTransformers == false) return DatabaseTaskOutcome.Abandoned; var saveFile = new SaveFileDialog { DefaultExt = ".ravendump", Filter = "Raven Dumps|*.ravendump;*.raven.dump", }; var name = ApplicationModel.Database.Value.Name; var normalizedName = new string(name.Select(ch => Path.GetInvalidPathChars().Contains(ch) ? '_' : ch).ToArray()); var defaultFileName = string.Format("Dump of {0}, {1}", normalizedName, DateTimeOffset.Now.ToString("dd MMM yyyy HH-mm", CultureInfo.InvariantCulture)); try { saveFile.DefaultFileName = defaultFileName; } catch { } if (saveFile.ShowDialog() != true) { return DatabaseTaskOutcome.Abandoned; } using (var stream = saveFile.OpenFile()) { ItemType operateOnTypes = 0; if (includeDocuments) { operateOnTypes |= ItemType.Documents; } if (includeAttachements) { operateOnTypes |= ItemType.Attachments; } if (includeIndexes) { operateOnTypes |= ItemType.Indexes; } if (includeTransformers) { operateOnTypes |= ItemType.Transformers; } var smuggler = new SmugglerApi(new SmugglerOptions { BatchSize = batchSize }, DatabaseCommands, message => Report(message)); var forwardtoUiBoundStream = new ForwardtoUIBoundStream(stream); var taskGeneration = new Task<Task>(() => smuggler.ExportData(forwardtoUiBoundStream, new SmugglerOptions { BatchSize = batchSize, Filters = filterSettings, TransformScript = transformScript, ShouldExcludeExpired = shouldExcludeExpired, OperateOnTypes = operateOnTypes }, false)); ThreadPool.QueueUserWorkItem(state => taskGeneration.Start()); await taskGeneration.Unwrap(); forwardtoUiBoundStream.Flush(); stream.Flush(); } return DatabaseTaskOutcome.Succesful; }
protected override async Task <DatabaseTaskOutcome> RunImplementation() { if (includeDocuments == false && includeAttachements == false && includeIndexes == false && includeTransformers == false) { return(DatabaseTaskOutcome.Abandoned); } var saveFile = new SaveFileDialog { DefaultExt = ".ravendump", Filter = "Raven Dumps|*.ravendump;*.raven.dump", }; var name = ApplicationModel.Database.Value.Name; var normalizedName = new string(name.Select(ch => Path.GetInvalidPathChars().Contains(ch) ? '_' : ch).ToArray()); var defaultFileName = string.Format("Dump of {0}, {1}", normalizedName, DateTimeOffset.Now.ToString("dd MMM yyyy HH-mm", CultureInfo.InvariantCulture)); try { saveFile.DefaultFileName = defaultFileName; } catch { } if (saveFile.ShowDialog() != true) { return(DatabaseTaskOutcome.Abandoned); } using (var stream = saveFile.OpenFile()) { ItemType operateOnTypes = 0; if (includeDocuments) { operateOnTypes |= ItemType.Documents; } if (includeAttachements) { operateOnTypes |= ItemType.Attachments; } if (includeIndexes) { operateOnTypes |= ItemType.Indexes; } if (removeAnalyzers) { operateOnTypes |= ItemType.RemoveAnalyzers; } if (includeTransformers) { operateOnTypes |= ItemType.Transformers; } var smuggler = new SmugglerApi(new SmugglerOptions { BatchSize = batchSize }, DatabaseCommands, message => Report(message)); var forwardtoUiBoundStream = new ForwardtoUIBoundStream(stream); var taskGeneration = new Task <Task>(() => smuggler.ExportData(forwardtoUiBoundStream, new SmugglerOptions { BatchSize = batchSize, Filters = filterSettings, TransformScript = transformScript, ShouldExcludeExpired = shouldExcludeExpired, OperateOnTypes = operateOnTypes }, false)); ThreadPool.QueueUserWorkItem(state => taskGeneration.Start()); await taskGeneration.Unwrap(); forwardtoUiBoundStream.Flush(); stream.Flush(); } return(DatabaseTaskOutcome.Succesful); }