From 314627f83c22fab5d890f5f842ddce74c8ba141b Mon Sep 17 00:00:00 2001
From: Kim Santiago <31145923+kisantia@users.noreply.github.com>
Date: Mon, 27 Apr 2020 17:37:08 -0700
Subject: [PATCH] Show file location for dacfx extract and export (#936)
* show file location for dacfx extract and export
* Add TargetDestination field to TaskInfo
* remove setting database and server name to null if there's packageFilePath
* remove unnecessary parameter
---
src/Microsoft.SqlTools.ServiceLayer/DacFx/DacFxService.cs | 4 +++-
.../TaskServices/Contracts/TaskInfo.cs | 5 +++++
.../TaskServices/SqlTask.cs | 1 +
.../TaskServices/TaskMetadata.cs | 8 +++++++-
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/Microsoft.SqlTools.ServiceLayer/DacFx/DacFxService.cs b/src/Microsoft.SqlTools.ServiceLayer/DacFx/DacFxService.cs
index b0760aaf..82519aac 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/DacFx/DacFxService.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/DacFx/DacFxService.cs
@@ -227,7 +227,9 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
{
try
{
- TaskMetadata metadata = TaskMetadata.Create(parameters, taskName, operation, ConnectionServiceInstance);
+ // show file location for export and extract operations
+ string targetLocation = (operation is ExportOperation || operation is ExtractOperation) ? parameters.PackageFilePath : null;
+ TaskMetadata metadata = TaskMetadata.Create(parameters, taskName, operation, ConnectionServiceInstance, targetLocation);
// put appropriate database name since connection passed was to master
metadata.DatabaseName = parameters.DatabaseName;
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/Contracts/TaskInfo.cs b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/Contracts/TaskInfo.cs
index 2f7822a8..944e3762 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/Contracts/TaskInfo.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/Contracts/TaskInfo.cs
@@ -35,6 +35,11 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices.Contracts
///
public string DatabaseName { get; set; }
+ ///
+ /// Target location for this task
+ ///
+ public string TargetLocation { get; set; }
+
///
/// Task name which defines the type of the task (e.g. CreateDatabase, Backup)
///
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/SqlTask.cs b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/SqlTask.cs
index 324cd734..f1bf573d 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/SqlTask.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/SqlTask.cs
@@ -474,6 +474,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
Description = TaskMetadata.Description,
TaskExecutionMode = TaskMetadata.TaskExecutionMode,
IsCancelable = this.TaskToCancel != null,
+ TargetLocation = TaskMetadata.TargetLocation,
};
}
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/TaskMetadata.cs b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/TaskMetadata.cs
index 0197e795..e4154bb8 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/TaskServices/TaskMetadata.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/TaskServices/TaskMetadata.cs
@@ -41,6 +41,11 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
///
public string DatabaseName { get; set; }
+ ///
+ /// Target location of this task
+ ///
+ public string TargetLocation { get; set; }
+
///
/// Data required to perform the task
///
@@ -59,7 +64,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
/// Task operation
/// Connection Service
/// Task metadata
- public static TaskMetadata Create(IRequestParams requestParam, string taskName, ITaskOperation taskOperation, ConnectionService connectionService)
+ public static TaskMetadata Create(IRequestParams requestParam, string taskName, ITaskOperation taskOperation, ConnectionService connectionService, string targetLocation = null)
{
TaskMetadata taskMetadata = new TaskMetadata();
ConnectionInfo connInfo;
@@ -90,6 +95,7 @@ namespace Microsoft.SqlTools.ServiceLayer.TaskServices
taskMetadata.TaskOperation = taskOperation;
taskMetadata.OwnerUri = requestParam.OwnerUri;
+ taskMetadata.TargetLocation = targetLocation;
return taskMetadata;
}