only show confirmation message for apply all changes, not for view changes in schema compare (#18520)

This commit is contained in:
Kim Santiago
2022-02-22 13:33:24 -08:00
committed by GitHub
parent 5547c2baba
commit 7b92c9eb65
2 changed files with 71 additions and 71 deletions

View File

@@ -1382,17 +1382,21 @@ export class ProjectsController {
if (model.action === UpdateProjectAction.Compare) {
await vscode.commands.executeCommand(constants.schemaCompareRunComparisonCommand, model.sourceEndpointInfo, model.targetEndpointInfo, true, undefined);
} else if (model.action === UpdateProjectAction.Update) {
await vscode.window.withProgress(
{
location: vscode.ProgressLocation.Notification,
title: constants.updatingProjectFromDatabase(path.basename(model.targetEndpointInfo.projectFilePath), model.sourceEndpointInfo.databaseName),
cancellable: false
}, async (_progress, _token) => {
return this.schemaCompareAndUpdateProject(model.sourceEndpointInfo, model.targetEndpointInfo);
});
await vscode.window.showWarningMessage(constants.applyConfirmation, { modal: true }, constants.yesString).then(async (result) => {
if (result === constants.yesString) {
await vscode.window.withProgress(
{
location: vscode.ProgressLocation.Notification,
title: constants.updatingProjectFromDatabase(path.basename(model.targetEndpointInfo.projectFilePath), model.sourceEndpointInfo.databaseName),
cancellable: false
}, async (_progress, _token) => {
return this.schemaCompareAndUpdateProject(model.sourceEndpointInfo, model.targetEndpointInfo);
});
void vscode.commands.executeCommand(constants.refreshDataWorkspaceCommand);
utils.getDataWorkspaceExtensionApi().showProjectsView();
void vscode.commands.executeCommand(constants.refreshDataWorkspaceCommand);
utils.getDataWorkspaceExtensionApi().showProjectsView();
}
});
} else {
throw new Error(`Unknown UpdateProjectAction: ${model.action}`);
}

View File

@@ -497,74 +497,70 @@ export class UpdateProjectFromDatabaseDialog {
}
public async handleUpdateButtonClick(): Promise<void> {
await vscode.window.showWarningMessage(constants.applyConfirmation, { modal: true }, constants.yesString).then(async (result) => {
if (result === constants.yesString) {
const serverDropdownValue = this.serverDropdown!.value! as azdata.CategoryValue as ConnectionDropdownValue;
const ownerUri = await getAzdataApi()!.connection.getUriForConnection(serverDropdownValue.connection.connectionId);
const serverDropdownValue = this.serverDropdown!.value! as azdata.CategoryValue as ConnectionDropdownValue;
const ownerUri = await getAzdataApi()!.connection.getUriForConnection(serverDropdownValue.connection.connectionId);
let connection = (await getAzdataApi()!.connection.getConnections(true)).filter(con => con.connectionId === serverDropdownValue.connection.connectionId)[0];
connection.databaseName = this.databaseDropdown!.value! as string;
let connection = (await getAzdataApi()!.connection.getConnections(true)).filter(con => con.connectionId === serverDropdownValue.connection.connectionId)[0];
connection.databaseName = this.databaseDropdown!.value! as string;
const credentials = await getAzdataApi()!.connection.getCredentials(connection.connectionId);
if (credentials.hasOwnProperty('password')) {
connection.password = connection.options.password = credentials.password;
}
const credentials = await getAzdataApi()!.connection.getCredentials(connection.connectionId);
if (credentials.hasOwnProperty('password')) {
connection.password = connection.options.password = credentials.password;
}
const connectionDetails: azdata.IConnectionProfile = {
id: connection.connectionId,
userName: connection.userName,
password: connection.password,
serverName: connection.serverName,
databaseName: connection.databaseName,
connectionName: connection.connectionName,
providerName: connection.providerId,
groupId: connection.groupId,
groupFullName: connection.groupFullName,
authenticationType: connection.authenticationType,
savePassword: connection.savePassword,
saveProfile: connection.saveProfile,
options: connection.options,
};
const connectionDetails: azdata.IConnectionProfile = {
id: connection.connectionId,
userName: connection.userName,
password: connection.password,
serverName: connection.serverName,
databaseName: connection.databaseName,
connectionName: connection.connectionName,
providerName: connection.providerId,
groupId: connection.groupId,
groupFullName: connection.groupFullName,
authenticationType: connection.authenticationType,
savePassword: connection.savePassword,
saveProfile: connection.saveProfile,
options: connection.options,
};
const sourceEndpointInfo: mssql.SchemaCompareEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Database,
databaseName: this.databaseDropdown!.value! as string,
serverDisplayName: serverDropdownValue.displayName,
serverName: serverDropdownValue.name!,
connectionDetails: connectionDetails,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: '',
targetScripts: [],
dataSchemaProvider: '',
packageFilePath: '',
connectionName: serverDropdownValue.connection.options.connectionName
};
const sourceEndpointInfo: mssql.SchemaCompareEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Database,
databaseName: this.databaseDropdown!.value! as string,
serverDisplayName: serverDropdownValue.displayName,
serverName: serverDropdownValue.name!,
connectionDetails: connectionDetails,
ownerUri: ownerUri,
projectFilePath: '',
folderStructure: '',
targetScripts: [],
dataSchemaProvider: '',
packageFilePath: '',
connectionName: serverDropdownValue.connection.options.connectionName
};
const targetEndpointInfo: mssql.SchemaCompareEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Project,
projectFilePath: this.projectFileTextBox!.value!,
folderStructure: this.folderStructureDropDown!.value as string,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: connectionDetails,
databaseName: '',
serverDisplayName: '',
serverName: '',
ownerUri: '',
packageFilePath: '',
};
const targetEndpointInfo: mssql.SchemaCompareEndpointInfo = {
endpointType: mssql.SchemaCompareEndpointType.Project,
projectFilePath: this.projectFileTextBox!.value!,
folderStructure: this.folderStructureDropDown!.value as string,
targetScripts: [],
dataSchemaProvider: '',
connectionDetails: connectionDetails,
databaseName: '',
serverDisplayName: '',
serverName: '',
ownerUri: '',
packageFilePath: '',
};
const model: UpdateProjectDataModel = {
sourceEndpointInfo: sourceEndpointInfo,
targetEndpointInfo: targetEndpointInfo,
action: this.action!
};
void this.updateProjectFromDatabaseCallback!(model);
}
const model: UpdateProjectDataModel = {
sourceEndpointInfo: sourceEndpointInfo,
targetEndpointInfo: targetEndpointInfo,
action: this.action!
};
this.dispose();
});
void this.updateProjectFromDatabaseCallback!(model);
this.dispose();
}
async validate(): Promise<boolean> {