mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
@@ -82,6 +82,7 @@ export class SchemaCompareDialog {
|
||||
sourceName = this.sourceTextBox.value;
|
||||
sourceEndpointInfo = {
|
||||
endpointType: azdata.SchemaCompareEndpointType.dacpac,
|
||||
serverName: '',
|
||||
databaseName: '',
|
||||
ownerUri: '',
|
||||
packageFilePath: this.sourceTextBox.value
|
||||
@@ -92,6 +93,7 @@ export class SchemaCompareDialog {
|
||||
|
||||
sourceEndpointInfo = {
|
||||
endpointType: azdata.SchemaCompareEndpointType.database,
|
||||
serverName: (this.sourceServerDropdown.value as ConnectionDropdownValue).name,
|
||||
databaseName: (<azdata.CategoryValue>this.sourceDatabaseDropdown.value).name,
|
||||
ownerUri: ownerUri,
|
||||
packageFilePath: ''
|
||||
@@ -103,6 +105,7 @@ export class SchemaCompareDialog {
|
||||
targetName = this.targetTextBox.value;
|
||||
targetEndpointInfo = {
|
||||
endpointType: azdata.SchemaCompareEndpointType.dacpac,
|
||||
serverName: '',
|
||||
databaseName: '',
|
||||
ownerUri: '',
|
||||
packageFilePath: this.targetTextBox.value
|
||||
@@ -113,6 +116,7 @@ export class SchemaCompareDialog {
|
||||
|
||||
targetEndpointInfo = {
|
||||
endpointType: azdata.SchemaCompareEndpointType.database,
|
||||
serverName: (this.targetServerDropdown.value as ConnectionDropdownValue).name,
|
||||
databaseName: (<azdata.CategoryValue>this.targetDatabaseDropdown.value).name,
|
||||
ownerUri: ownerUri,
|
||||
packageFilePath: ''
|
||||
|
||||
3
extensions/schema-compare/src/media/start-inverse.svg
Normal file
3
extensions/schema-compare/src/media/start-inverse.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14 8L4 15V1L14 8Z" fill="#4894FE"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 149 B |
3
extensions/schema-compare/src/media/start.svg
Normal file
3
extensions/schema-compare/src/media/start.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14 8L4 15V1L14 8Z" fill="#015CDA"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 149 B |
@@ -22,6 +22,7 @@ export class SchemaCompareResult {
|
||||
private switchButton: azdata.ButtonComponent;
|
||||
private compareButton: azdata.ButtonComponent;
|
||||
private generateScriptButton: azdata.ButtonComponent;
|
||||
private applyButton: azdata.ButtonComponent;
|
||||
private SchemaCompareActionMap: Map<Number, string>;
|
||||
private comparisonResult: azdata.SchemaCompareResult;
|
||||
private sourceNameComponent: azdata.TableComponent;
|
||||
@@ -65,16 +66,18 @@ export class SchemaCompareResult {
|
||||
this.createSwitchButton(view);
|
||||
this.createCompareButton(view);
|
||||
this.createGenerateScriptButton(view);
|
||||
this.createApplyButton(view);
|
||||
this.resetButtons();
|
||||
|
||||
let toolBar = view.modelBuilder.toolbarContainer();
|
||||
toolBar.addToolbarItems([{
|
||||
component: this.compareButton
|
||||
}, {
|
||||
component: this.generateScriptButton,
|
||||
component: this.generateScriptButton
|
||||
}, {
|
||||
component: this.applyButton,
|
||||
toolbarSeparatorAfter: true
|
||||
},
|
||||
{
|
||||
}, {
|
||||
component: this.switchButton
|
||||
}]);
|
||||
|
||||
@@ -192,8 +195,10 @@ export class SchemaCompareResult {
|
||||
// only enable generate script button if the target is a db
|
||||
if (this.targetEndpointInfo.endpointType === azdata.SchemaCompareEndpointType.database) {
|
||||
this.generateScriptButton.enabled = true;
|
||||
this.applyButton.enabled = true;
|
||||
} else {
|
||||
this.generateScriptButton.title = localize('schemaCompare.generateScriptButtonDisabledTitle', 'Generate script is enabled when the target is a database');
|
||||
this.applyButton.title = localize('schemaCompare.applyButtonDisabledTitle', 'Apply is enabled when the target is a database');
|
||||
}
|
||||
} else {
|
||||
this.flexModel.addItem(this.noDifferencesLabel, { CSSStyles: { 'margin': 'auto' } });
|
||||
@@ -310,11 +315,33 @@ export class SchemaCompareResult {
|
||||
});
|
||||
}
|
||||
|
||||
private createApplyButton(view: azdata.ModelView) {
|
||||
|
||||
this.applyButton = view.modelBuilder.button().withProperties({
|
||||
label: localize('schemaCompare.updateButton', 'Apply'),
|
||||
iconPath: {
|
||||
light: path.join(__dirname, 'media', 'start.svg'),
|
||||
dark: path.join(__dirname, 'media', 'start-inverse.svg')
|
||||
},
|
||||
}).component();
|
||||
|
||||
this.applyButton.onDidClick(async (click) => {
|
||||
let service = await SchemaCompareResult.getService('MSSQL');
|
||||
let result = await service.schemaComparePublishChanges(this.comparisonResult.operationId, this.targetEndpointInfo.serverName, this.targetEndpointInfo.databaseName, azdata.TaskExecutionMode.execute);
|
||||
if (!result || !result.success) {
|
||||
vscode.window.showErrorMessage(
|
||||
localize('schemaCompare.updateErrorMessage', "Schema Compare Apply failed '{0}'", result.errorMessage ? result.errorMessage : 'Unknown'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private resetButtons(): void {
|
||||
this.compareButton.enabled = false;
|
||||
this.switchButton.enabled = false;
|
||||
this.generateScriptButton.enabled = false;
|
||||
this.applyButton.enabled = false;
|
||||
this.generateScriptButton.title = localize('schemaCompare.generateScriptEnabledButton', 'Generate script to deploy changes to target');
|
||||
this.applyButton.title = localize('schemaCompare.applyButtonEnabledTitle', 'Apply changes to target');
|
||||
}
|
||||
|
||||
private createSwitchButton(view: azdata.ModelView): void {
|
||||
|
||||
Reference in New Issue
Block a user