Applying Changes to SQL Database Projects and Using Projects in Comparison (#1296)

* passing initial testing

* update local project from database

* update local project

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* update project from database

* Bump .net version

* PR feedback

* Adding temporary compat shim

* reverting some formatting changes; fixing strings

* PR feedback

Co-authored-by: Noureldine Yehia <t-nyehia@microsoft.com>
This commit is contained in:
Benjin Dubishar
2021-11-12 12:51:35 -08:00
committed by GitHub
parent 1d5db8ac29
commit a74b55c6a8
13 changed files with 1072 additions and 104 deletions

View File

@@ -13,7 +13,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
/// <summary>
/// Parameters for a schema compare generate script request.
/// </summary>
public class SchemaCompareGenerateScriptParams : SchemaComparePublishChangesParams
public class SchemaCompareGenerateScriptParams : SchemaComparePublishDatabaseChangesParams
{
}

View File

@@ -39,7 +39,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
/// </summary>
class SchemaComparePublishChangesRequest
{
public static readonly RequestType<SchemaComparePublishChangesParams, ResultStatus> Type =
RequestType<SchemaComparePublishChangesParams, ResultStatus>.Create("schemaCompare/publish");
public static readonly RequestType<SchemaComparePublishDatabaseChangesParams, ResultStatus> Type =
RequestType<SchemaComparePublishDatabaseChangesParams, ResultStatus>.Create("schemaCompare/publish");
}
}
}

View File

@@ -0,0 +1,46 @@
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
using Microsoft.SqlTools.ServiceLayer.TaskServices;
using Microsoft.SqlTools.ServiceLayer.Utility;
namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
{
/// <summary>
/// Parameters for a schema compare publish database changes request.
/// </summary>
public class SchemaComparePublishDatabaseChangesParams
{
/// <summary>
/// Operation id of the schema compare operation
/// </summary>
public string OperationId { get; set; }
/// <summary>
/// Name of target server
/// </summary>
public string TargetServerName { get; set; }
/// <summary>
/// Name of target database
/// </summary>
public string TargetDatabaseName { get; set; }
/// <summary>
/// Execution mode for the operation. Default is execution
/// </summary>
public TaskExecutionMode TaskExecutionMode { get; set; }
}
/// <summary>
/// Defines the Schema Compare publish database changes request type
/// </summary>
class SchemaComparePublishDatabaseChangesRequest
{
public static readonly RequestType<SchemaComparePublishDatabaseChangesParams, ResultStatus> Type =
RequestType<SchemaComparePublishDatabaseChangesParams, ResultStatus>.Create("schemaCompare/publishDatabase");
}
}

View File

@@ -0,0 +1,47 @@
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using Microsoft.SqlServer.Dac;
using Microsoft.SqlServer.Dac.Compare;
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
using Microsoft.SqlTools.ServiceLayer.TaskServices;
namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
{
/// <summary>
/// Parameters for a schema compare publish project changes request.
/// </summary>
public class SchemaComparePublishProjectChangesParams
{
/// <summary>
/// Operation id of the schema compare operation
/// </summary>
public string OperationId { get; set; }
/// <summary>
/// Path of project folder
/// </summary>
public string TargetProjectPath { get; set; }
/// <summary>
/// folder structure of target folder
/// </summary>
public DacExtractTarget TargetFolderStructure { get; set; }
/// <summary>
/// Execution mode for the operation. Default is execution
/// </summary>
public TaskExecutionMode TaskExecutionMode { get; set; }
}
/// <summary>
/// Defines the Schema Compare publish project changes request type
/// </summary>
class SchemaComparePublishProjectChangesRequest
{
public static readonly RequestType<SchemaComparePublishProjectChangesParams, SchemaComparePublishProjectResult> Type =
RequestType<SchemaComparePublishProjectChangesParams, SchemaComparePublishProjectResult>.Create("schemaCompare/publishProject");
}
}

View File

@@ -12,12 +12,21 @@ using Microsoft.SqlTools.ServiceLayer.Utility;
namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
{
/// <summary>
/// Types of schema compare endpoints
/// </summary>
public enum SchemaCompareEndpointType
{
Database,
Dacpac
Database = 0,
Dacpac = 1,
Project = 2
// must be kept in-sync with SchemaCompareEndpointType in Azure Data Studio
// located at \extensions\mssql\src\mssql.d.ts
}
/// <summary>
/// Info needed from endpoints for schema comparison
/// </summary>
public class SchemaCompareEndpointInfo
{
/// <summary>
@@ -25,6 +34,21 @@ namespace Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts
/// </summary>
public SchemaCompareEndpointType EndpointType { get; set; }
/// <summary>
/// Gets or sets the project file path
/// </summary>
public string ProjectFilePath { get; set; }
/// <summary>
/// Gets or sets the scripts included in project
/// </summary>
public string[] TargetScripts { get; set; }
/// <summary>
/// Gets or sets the project data schema provider
/// </summary>
public string DataSchemaProvider { get; set; }
/// <summary>
/// Gets or sets package filepath
/// </summary>