Add DacFx Generate Deploy Script operation (#759)

* Adding DacFx Generate Deploy Script operation
This commit is contained in:
kisantia
2019-01-25 11:34:28 -08:00
committed by GitHub
parent adc13cff82
commit 1917100bfb
9 changed files with 211 additions and 30 deletions

View File

@@ -43,6 +43,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
serviceHost.SetRequestHandler(ImportRequest.Type, this.HandleImportRequest);
serviceHost.SetRequestHandler(ExtractRequest.Type, this.HandleExtractRequest);
serviceHost.SetRequestHandler(DeployRequest.Type, this.HandleDeployRequest);
serviceHost.SetRequestHandler(GenerateDeployScriptRequest.Type, this.HandleGenerateDeployScriptRequest);
}
/// <summary>
@@ -64,8 +65,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
out connInfo);
if (connInfo != null)
{
SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "Export");
ExportOperation operation = new ExportOperation(parameters, sqlConn);
ExportOperation operation = new ExportOperation(parameters, connInfo);
await ExecuteOperation(operation, parameters, "Export bacpac", requestContext);
}
}
@@ -89,8 +89,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
out connInfo);
if (connInfo != null)
{
SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "Import");
ImportOperation operation = new ImportOperation(parameters, sqlConn);
ImportOperation operation = new ImportOperation(parameters, connInfo);
await ExecuteOperation(operation, parameters, "Import bacpac", requestContext);
}
}
@@ -114,8 +113,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
out connInfo);
if (connInfo != null)
{
SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "Extract");
ExtractOperation operation = new ExtractOperation(parameters, sqlConn);
ExtractOperation operation = new ExtractOperation(parameters, connInfo);
await ExecuteOperation(operation, parameters, "Extract dacpac", requestContext);
}
}
@@ -139,8 +137,7 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
out connInfo);
if (connInfo != null)
{
SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "Deploy");
DeployOperation operation = new DeployOperation(parameters, sqlConn);
DeployOperation operation = new DeployOperation(parameters, connInfo);
await ExecuteOperation(operation, parameters, "Deploy dacpac", requestContext);
}
}
@@ -150,6 +147,44 @@ namespace Microsoft.SqlTools.ServiceLayer.DacFx
}
}
/// <summary>
/// Handles request to generate deploy script
/// </summary>
/// <returns></returns>
public async Task HandleGenerateDeployScriptRequest(GenerateDeployScriptParams parameters, RequestContext<DacFxResult> requestContext)
{
try
{
ConnectionInfo connInfo;
ConnectionServiceInstance.TryFindConnection(
parameters.OwnerUri,
out connInfo);
if (connInfo != null)
{
GenerateDeployScriptOperation operation = new GenerateDeployScriptOperation(parameters, connInfo);
SqlTask sqlTask = null;
TaskMetadata metadata = TaskMetadata.Create(parameters, "Generate script", operation, ConnectionServiceInstance);
// want to show filepath in task history instead of server and database
metadata.ServerName = parameters.ScriptFilePath;
metadata.DatabaseName = "";
sqlTask = SqlTaskManagerInstance.CreateAndRun<SqlTask>(metadata);
await requestContext.SendResult(new DacFxResult()
{
OperationId = operation.OperationId,
Success = true,
ErrorMessage = ""
});
}
}
catch (Exception e)
{
await requestContext.SendError(e);
}
}
private async Task ExecuteOperation(DacFxOperation operation, DacFxParams parameters, string taskName, RequestContext<DacFxResult> requestContext)
{
SqlTask sqlTask = null;