Skip to content

Commit

Permalink
Add schema compare contracts and endpoints (#18564)
Browse files Browse the repository at this point in the history
* Add schema compare contracts and endpoints

* Remove accidental whitespace

* Code review changes
  • Loading branch information
lewis-sanchez authored Jan 28, 2025
1 parent 21d4df9 commit 3b4adc1
Show file tree
Hide file tree
Showing 3 changed files with 368 additions and 2 deletions.
72 changes: 72 additions & 0 deletions src/models/contracts/schemaCompare/schemaCompareContracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,42 @@
import { RequestType } from "vscode-languageclient";
import * as mssql from "vscode-mssql";

export namespace SchemaCompareRequest {
export const type = new RequestType<
mssql.SchemaCompareParams,
mssql.SchemaCompareResult,
void,
void
>("schemaCompare/compare");
}

export namespace SchemaCompareGenerateScriptRequest {
export const type = new RequestType<
mssql.SchemaCompareGenerateScriptParams,
mssql.ResultStatus,
void,
void
>("schemaCompare/generateScript");
}

export namespace SchemaComparePublishDatabaseChangesRequest {
export const type = new RequestType<
mssql.SchemaComparePublishDatabaseChangesParams,
mssql.ResultStatus,
void,
void
>("schemaCompare/publishDatabase");
}

export namespace SchemaComparePublishProjectChangesRequest {
export const type = new RequestType<
mssql.SchemaComparePublishProjectChangesParams,
mssql.SchemaComparePublishProjectResult,
void,
void
>("schemaCompare/publishProject");
}

export namespace SchemaCompareGetDefaultOptionsRequest {
export const type = new RequestType<
mssql.SchemaCompareGetOptionsParams,
Expand All @@ -14,3 +50,39 @@ export namespace SchemaCompareGetDefaultOptionsRequest {
void
>("schemaCompare/getDefaultOptions");
}

export namespace SchemaCompareIncludeExcludeNodeRequest {
export const type = new RequestType<
mssql.SchemaCompareNodeParams,
mssql.SchemaCompareIncludeExcludeResult,
void,
void
>("schemaCompare/includeExcludeNode");
}

export namespace SchemaCompareOpenScmpRequest {
export const type = new RequestType<
mssql.SchemaCompareOpenScmpParams,
mssql.SchemaCompareOpenScmpResult,
void,
void
>("schemaCompare/openScmp");
}

export namespace SchemaCompareSaveScmpRequest {
export const type = new RequestType<
mssql.SchemaCompareSaveScmpParams,
mssql.ResultStatus,
void,
void
>("schemaCompare/saveScmp");
}

export namespace SchemaCompareCancellationRequest {
export const type = new RequestType<
mssql.SchemaCompareCancelParams,
mssql.ResultStatus,
void,
void
>("schemaCompare/cancel");
}
151 changes: 150 additions & 1 deletion src/services/schemaCompareService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,160 @@ import * as mssql from "vscode-mssql";
export class SchemaCompareService implements mssql.ISchemaCompareService {
constructor(private _client: SqlToolsServiceClient) {}

public schemaCompareGetDefaultOptions(): Thenable<mssql.SchemaCompareOptionsResult> {
public compare(
operationId: string,
sourceEndpointInfo: mssql.SchemaCompareEndpointInfo,
targetEndpointInfo: mssql.SchemaCompareEndpointInfo,
taskExecutionMode: mssql.TaskExecutionMode,
deploymentOptions: mssql.DeploymentOptions,
): Thenable<mssql.SchemaCompareResult> {
const params: mssql.SchemaCompareParams = {
operationId: operationId,
sourceEndpointInfo: sourceEndpointInfo,
targetEndpointInfo: targetEndpointInfo,
taskExecutionMode: taskExecutionMode,
deploymentOptions: deploymentOptions,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareRequest.type,
params,
);
}

public generateScript(
operationId: string,
targetServerName: string,
targetDatabaseName: string,
taskExecutionMode: mssql.TaskExecutionMode,
): Thenable<mssql.ResultStatus> {
const params: mssql.SchemaCompareGenerateScriptParams = {
operationId: operationId,
targetServerName: targetServerName,
targetDatabaseName: targetDatabaseName,
taskExecutionMode: taskExecutionMode,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareGenerateScriptRequest.type,
params,
);
}

public publishDatabaseChanges(
operationId: string,
targetServerName: string,
targetDatabaseName: string,
taskExecutionMode: mssql.TaskExecutionMode,
): Thenable<mssql.ResultStatus> {
const params: mssql.SchemaComparePublishDatabaseChangesParams = {
operationId: operationId,
targetServerName: targetServerName,
targetDatabaseName: targetDatabaseName,
taskExecutionMode: taskExecutionMode,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaComparePublishDatabaseChangesRequest
.type,
params,
);
}

public publishProjectChanges(
operationId: string,
targetProjectPath: string,
targetFolderStructure: mssql.ExtractTarget,
taskExecutionMode: mssql.TaskExecutionMode,
): Thenable<mssql.SchemaComparePublishProjectResult> {
const params: mssql.SchemaComparePublishProjectChangesParams = {
operationId: operationId,
targetProjectPath: targetProjectPath,
targetFolderStructure: targetFolderStructure,
taskExecutionMode: taskExecutionMode,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaComparePublishProjectChangesRequest
.type,
params,
);
}

public getDefaultOptions(): Thenable<mssql.SchemaCompareOptionsResult> {
const params: mssql.SchemaCompareGetOptionsParams = {};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareGetDefaultOptionsRequest.type,
params,
);
}

public includeExcludeNode(
operationId: string,
diffEntry: mssql.DiffEntry,
includeRequest: boolean,
taskExecutionMode: mssql.TaskExecutionMode,
): Thenable<mssql.SchemaCompareIncludeExcludeResult> {
const params: mssql.SchemaCompareNodeParams = {
operationId: operationId,
diffEntry: diffEntry,
includeRequest: includeRequest,
taskExecutionMode: taskExecutionMode,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareIncludeExcludeNodeRequest.type,
params,
);
}

public openScmp(
filePath: string,
): Thenable<mssql.SchemaCompareOpenScmpResult> {
const params: mssql.SchemaCompareOpenScmpParams = {
filePath: filePath,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareOpenScmpRequest.type,
params,
);
}

public saveScmp(
sourceEndpointInfo: mssql.SchemaCompareEndpointInfo,
targetEndpointInfo: mssql.SchemaCompareEndpointInfo,
taskExecutionMode: mssql.TaskExecutionMode,
deploymentOptions: mssql.DeploymentOptions,
scmpFilePath: string,
excludedSourceObjects: mssql.SchemaCompareObjectId[],
excludedTargetObjects: mssql.SchemaCompareObjectId[],
): Thenable<mssql.ResultStatus> {
const params: mssql.SchemaCompareSaveScmpParams = {
sourceEndpointInfo: sourceEndpointInfo,
targetEndpointInfo: targetEndpointInfo,
taskExecutionMode: taskExecutionMode,
deploymentOptions: deploymentOptions,
scmpFilePath: scmpFilePath,
excludedSourceObjects: excludedSourceObjects,
excludedTargetObjects: excludedTargetObjects,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareSaveScmpRequest.type,
params,
);
}

public cancel(operationId: string): Thenable<mssql.ResultStatus> {
const params: mssql.SchemaCompareCancelParams = {
operationId: operationId,
};

return this._client.sendRequest(
schemaCompareContracts.SchemaCompareCancellationRequest.type,
params,
);
}
}
Loading

0 comments on commit 3b4adc1

Please sign in to comment.