Update SC dialog to save/read file structure to/from schema compare file (#22727)

* Read/Send ExtractTarget information from/to STS

* Remove comment

* Cleanup comment and update azdata dependency
This commit is contained in:
Sakshi Sharma
2023-04-14 11:47:59 -07:00
committed by GitHub
parent 18a541b0a6
commit d69e5b97df
8 changed files with 47 additions and 35 deletions

View File

@@ -55,7 +55,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: '',
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -68,7 +68,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: '',
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -123,7 +123,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: sourceDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -136,7 +136,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: targetDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -196,7 +196,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -209,7 +209,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: targetDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -256,7 +256,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: '',
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -269,7 +269,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: '',
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -330,7 +330,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -343,7 +343,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: targetDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -413,7 +413,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -426,7 +426,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: targetDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -484,7 +484,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: '',
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined
@@ -497,7 +497,7 @@ suite('Schema compare integration test suite @DacFx@', () => {
databaseName: targetDB,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: undefined

View File

@@ -135,7 +135,7 @@ declare module 'mssql' {
connectionName?: string;
projectFilePath: string;
targetScripts: string[];
folderStructure: ExtractTarget;
extractTarget: ExtractTarget;
dataSchemaProvider: string;
}

View File

@@ -7,7 +7,7 @@
"preview": false,
"engines": {
"vscode": "^1.25.0",
"azdata": ">=1.40.0"
"azdata": ">=1.44.0"
},
"license": "https://raw.githubusercontent.com/Microsoft/azuredatastudio/main/LICENSE.txt",
"icon": "images/extension.png",

View File

@@ -118,7 +118,7 @@ export class SchemaCompareDialog {
ownerUri: ownerUri,
projectFilePath: '',
targetScripts: [],
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
packageFilePath: '',
dataSchemaProvider: '',
connectionDetails: undefined,
@@ -133,7 +133,7 @@ export class SchemaCompareDialog {
ownerUri: '',
projectFilePath: '',
targetScripts: [],
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
dataSchemaProvider: '',
packageFilePath: this.sourceTextBox.value,
connectionDetails: undefined
@@ -144,7 +144,7 @@ export class SchemaCompareDialog {
projectFilePath: this.sourceTextBox.value,
targetScripts: await this.getProjectScriptFiles(this.sourceTextBox.value),
dataSchemaProvider: await this.getDatabaseSchemaProvider(this.sourceTextBox.value),
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
serverDisplayName: '',
serverName: '',
databaseName: '',
@@ -165,7 +165,7 @@ export class SchemaCompareDialog {
databaseName: this.targetDatabaseDropdown.value.toString(),
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
packageFilePath: '',
dataSchemaProvider: '',
@@ -180,7 +180,7 @@ export class SchemaCompareDialog {
databaseName: '',
ownerUri: '',
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
packageFilePath: this.targetTextBox.value,
@@ -190,7 +190,7 @@ export class SchemaCompareDialog {
this.schemaCompareMainWindow.targetEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Project,
projectFilePath: this.targetTextBox.value,
folderStructure: mapExtractTargetEnum(<string>this.targetStructureDropdown!.value),
extractTarget: mapExtractTargetEnum(<string>this.targetStructureDropdown!.value),
targetScripts: await this.getProjectScriptFiles(this.targetTextBox.value),
dataSchemaProvider: await this.getDatabaseSchemaProvider(this.targetTextBox.value),
serverDisplayName: '',
@@ -447,13 +447,14 @@ export class SchemaCompareDialog {
}
private createStructureDropdown(): azdata.FormComponent {
const value = !this.schemaCompareMainWindow.targetEndpointInfo ? loc.schemaObjectType : mapExtractTargetToString(this.schemaCompareMainWindow.targetEndpointInfo.extractTarget);
this.targetStructureDropdown = this.view.modelBuilder.dropDown().withProps({
editable: true,
fireOnTextChange: true,
ariaLabel: loc.targetStructure,
width: this.textBoxWidth,
values: [loc.file, loc.flat, loc.objectType, loc.schema, loc.schemaObjectType],
value: loc.schemaObjectType,
value: value,
}).component();
return {
@@ -1029,3 +1030,14 @@ export function mapExtractTargetEnum(inputTarget: string): mssql.ExtractTarget {
default: return mssql.ExtractTarget.schemaObjectType;
}
}
export function mapExtractTargetToString(inputTarget: mssql.ExtractTarget) {
switch (inputTarget) {
case mssql.ExtractTarget.file: return loc.file;
case mssql.ExtractTarget.flat: return loc.flat;
case mssql.ExtractTarget.objectType: return loc.objectType;
case mssql.ExtractTarget.schema: return loc.schema;
case mssql.ExtractTarget.schemaObjectType:
default: return loc.schemaObjectType;
}
}

View File

@@ -131,7 +131,7 @@ export class SchemaCompareMainWindow {
projectFilePath: '',
targetScripts: [],
dataSchemaProvider: '',
folderStructure: mssql.ExtractTarget.schemaObjectType
extractTarget: mssql.ExtractTarget.schemaObjectType
};
} else if (sourceDacpac) {
source = {
@@ -145,7 +145,7 @@ export class SchemaCompareMainWindow {
projectFilePath: '',
targetScripts: [],
dataSchemaProvider: '',
folderStructure: mssql.ExtractTarget.schemaObjectType
extractTarget: mssql.ExtractTarget.schemaObjectType
};
} else if (sourceProject) {
source = {
@@ -159,7 +159,7 @@ export class SchemaCompareMainWindow {
projectFilePath: sourceProject,
targetScripts: [],
dataSchemaProvider: undefined,
folderStructure: mssql.ExtractTarget.schemaObjectType
extractTarget: mssql.ExtractTarget.schemaObjectType
};
}
@@ -889,7 +889,7 @@ export class SchemaCompareMainWindow {
result = await service.schemaComparePublishDatabaseChanges(this.comparisonResult.operationId, this.targetEndpointInfo.serverName, this.targetEndpointInfo.databaseName, azdata.TaskExecutionMode.execute);
break;
case mssql.SchemaCompareEndpointType.Project:
result = await vscode.commands.executeCommand(loc.sqlDatabaseProjectsPublishChanges, this.comparisonResult.operationId, this.targetEndpointInfo.projectFilePath, this.targetEndpointInfo.folderStructure);
result = await vscode.commands.executeCommand(loc.sqlDatabaseProjectsPublishChanges, this.comparisonResult.operationId, this.targetEndpointInfo.projectFilePath, this.targetEndpointInfo.extractTarget);
if (!result.success) {
void vscode.window.showErrorMessage(loc.applyError);
}
@@ -1151,8 +1151,8 @@ export class SchemaCompareMainWindow {
connectionDetails: undefined,
projectFilePath: endpoint.projectFilePath,
targetScripts: [],
dataSchemaProvider: '',
folderStructure: mssql.ExtractTarget.schemaObjectType // TODO: Pick this automatically from the scmp file, after issue #20332 is resolved (check dsp as well)
dataSchemaProvider: endpoint.dataSchemaProvider,
extractTarget: endpoint.extractTarget
};
} else {
// need to do this instead of just setting it to the endpoint because some fields are null which will cause an error when sending the compare request

View File

@@ -52,7 +52,7 @@ export const mockDacpacEndpoint: mssql.SchemaCompareEndpointInfo = {
packageFilePath: mockFilePath,
connectionDetails: undefined,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
};
@@ -66,7 +66,7 @@ export const mockDatabaseEndpoint: mssql.SchemaCompareEndpointInfo = {
packageFilePath: '',
connectionDetails: undefined,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
};

View File

@@ -1821,7 +1821,7 @@ export class ProjectsController {
}
// Publish the changes (retrieved from the cache by operationId)
const publishResult = await this.schemaComparePublishProjectChanges(operationId, target.projectFilePath, target.folderStructure);
const publishResult = await this.schemaComparePublishProjectChanges(operationId, target.projectFilePath, target.extractTarget);
if (publishResult.success) {
void vscode.window.showInformationMessage(constants.applySuccess);

View File

@@ -445,7 +445,7 @@ export class UpdateProjectFromDatabaseDialog {
private createFolderStructureRow(view: azdata.ModelView): azdata.FlexContainer {
this.folderStructureDropDown = view.modelBuilder.dropDown().withProps({
values: [constants.file, constants.flat, constants.objectType, constants.schema, constants.schemaObjectType],
value: constants.schemaObjectType, //TODO: Read this value from project info after fixing https://github.com/microsoft/azuredatastudio/issues/20332
value: constants.schemaObjectType,
ariaLabel: constants.folderStructureLabel,
required: true,
width: cssStyles.updateProjectFromDatabaseTextboxWidth
@@ -560,7 +560,7 @@ export class UpdateProjectFromDatabaseDialog {
connectionDetails: connectionDetails,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: mssql.ExtractTarget.schemaObjectType,
extractTarget: mssql.ExtractTarget.schemaObjectType,
targetScripts: [],
dataSchemaProvider: '',
packageFilePath: '',
@@ -570,7 +570,7 @@ export class UpdateProjectFromDatabaseDialog {
const targetEndpointInfo: mssql.SchemaCompareEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Project,
projectFilePath: this.projectFileDropdown!.value! as string,
folderStructure: mapExtractTargetEnum(<string>this.folderStructureDropDown!.value),
extractTarget: mapExtractTargetEnum(<string>this.folderStructureDropDown!.value),
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: connectionDetails,