mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-24 09:35:37 -05:00
Feature/schemacompare options (#5143)
* extension now working * make button messages better * fix diff editor title disappearing and remove border from source and target name boxes * redoing a bunch of stuff that disappeared after rebasing * add images and add to extensions.ts * moving a few changes to the right place after rebase * formatting * Initial schema compare options working code * Adding description.icon etc. * Enabling disabling options button * Name change: SchemaCompareOptions to DeploymentOptions. To reflect SqltoolsService side parameters * Adding sorting and correct sql tools version * Adding options button themes * Formatting fix * Adding get default options call to get options from tools service * Exclude/Include changes - first commit * Adding border to checkboxes * Taking PR comments * Updating to latest sqltools with schema compare options
This commit is contained in:
158
src/sql/azdata.proposed.d.ts
vendored
158
src/sql/azdata.proposed.d.ts
vendored
@@ -1742,10 +1742,166 @@ declare module 'azdata' {
|
||||
ownerUri: string;
|
||||
}
|
||||
|
||||
export interface SchemaCompareOptionsResult extends ResultStatus {
|
||||
defaultDeploymentOptions: DeploymentOptions;
|
||||
}
|
||||
|
||||
export interface DeploymentOptions {
|
||||
ignoreTableOptions: boolean;
|
||||
ignoreSemicolonBetweenStatements: boolean;
|
||||
ignoreRouteLifetime: boolean;
|
||||
ignoreRoleMembership: boolean;
|
||||
ignoreQuotedIdentifiers: boolean;
|
||||
ignorePermissions: boolean;
|
||||
ignorePartitionSchemes: boolean;
|
||||
ignoreObjectPlacementOnPartitionScheme: boolean;
|
||||
ignoreNotForReplication: boolean;
|
||||
ignoreLoginSids: boolean;
|
||||
ignoreLockHintsOnIndexes: boolean;
|
||||
ignoreKeywordCasing: boolean;
|
||||
ignoreIndexPadding: boolean;
|
||||
ignoreIndexOptions: boolean;
|
||||
ignoreIncrement: boolean;
|
||||
ignoreIdentitySeed: boolean;
|
||||
ignoreUserSettingsObjects: boolean;
|
||||
ignoreFullTextCatalogFilePath: boolean;
|
||||
ignoreWhitespace: boolean;
|
||||
ignoreWithNocheckOnForeignKeys: boolean;
|
||||
verifyCollationCompatibility: boolean;
|
||||
unmodifiableObjectWarnings: boolean;
|
||||
treatVerificationErrorsAsWarnings: boolean;
|
||||
scriptRefreshModule: boolean;
|
||||
scriptNewConstraintValidation: boolean;
|
||||
scriptFileSize: boolean;
|
||||
scriptDeployStateChecks: boolean;
|
||||
scriptDatabaseOptions: boolean;
|
||||
scriptDatabaseCompatibility: boolean;
|
||||
scriptDatabaseCollation: boolean;
|
||||
runDeploymentPlanExecutors: boolean;
|
||||
registerDataTierApplication: boolean;
|
||||
populateFilesOnFileGroups: boolean;
|
||||
noAlterStatementsToChangeClrTypes: boolean;
|
||||
includeTransactionalScripts: boolean;
|
||||
includeCompositeObjects: boolean;
|
||||
allowUnsafeRowLevelSecurityDataMovement: boolean;
|
||||
ignoreWithNocheckOnCheckConstraints: boolean;
|
||||
ignoreFillFactor: boolean;
|
||||
ignoreFileSize: boolean;
|
||||
ignoreFilegroupPlacement: boolean;
|
||||
doNotAlterReplicatedObjects: boolean;
|
||||
doNotAlterChangeDataCaptureObjects: boolean;
|
||||
disableAndReenableDdlTriggers: boolean;
|
||||
deployDatabaseInSingleUserMode: boolean;
|
||||
createNewDatabase: boolean;
|
||||
compareUsingTargetCollation: boolean;
|
||||
commentOutSetVarDeclarations: boolean;
|
||||
blockWhenDriftDetected: boolean;
|
||||
blockOnPossibleDataLoss: boolean;
|
||||
backupDatabaseBeforeChanges: boolean;
|
||||
allowIncompatiblePlatform: boolean;
|
||||
allowDropBlockingAssemblies: boolean;
|
||||
dropConstraintsNotInSource: boolean;
|
||||
dropDmlTriggersNotInSource: boolean;
|
||||
dropExtendedPropertiesNotInSource: boolean;
|
||||
dropIndexesNotInSource: boolean;
|
||||
ignoreFileAndLogFilePath: boolean;
|
||||
ignoreExtendedProperties: boolean;
|
||||
ignoreDmlTriggerState: boolean;
|
||||
ignoreDmlTriggerOrder: boolean;
|
||||
ignoreDefaultSchema: boolean;
|
||||
ignoreDdlTriggerState: boolean;
|
||||
ignoreDdlTriggerOrder: boolean;
|
||||
ignoreCryptographicProviderFilePath: boolean;
|
||||
verifyDeployment: boolean;
|
||||
ignoreComments: boolean;
|
||||
ignoreColumnCollation: boolean;
|
||||
ignoreAuthorizer: boolean;
|
||||
ignoreAnsiNulls: boolean;
|
||||
generateSmartDefaults: boolean;
|
||||
dropStatisticsNotInSource: boolean;
|
||||
dropRoleMembersNotInSource: boolean;
|
||||
dropPermissionsNotInSource: boolean;
|
||||
dropObjectsNotInSource: boolean;
|
||||
ignoreColumnOrder: boolean;
|
||||
doNotDropObjectTypes: SchemaObjectType[];
|
||||
excludeObjectTypes: SchemaObjectType[];
|
||||
}
|
||||
|
||||
export enum SchemaObjectType {
|
||||
aggregates = 0,
|
||||
applicationRoles = 1,
|
||||
assemblies = 2,
|
||||
assemblyFiles = 3,
|
||||
asymmetricKeys = 4,
|
||||
brokerPriorities = 5,
|
||||
certificates = 6,
|
||||
columnEncryptionKeys = 7,
|
||||
columnMasterKeys = 8,
|
||||
contracts = 9,
|
||||
databaseOptions = 10,
|
||||
databaseRoles = 11,
|
||||
databaseTriggers = 12,
|
||||
defaults = 13,
|
||||
extendedProperties = 14,
|
||||
externalDataSources = 15,
|
||||
externalFileFormats = 16,
|
||||
externalTables = 17,
|
||||
filegroups = 18,
|
||||
fileTables = 19,
|
||||
fullTextCatalogs = 20,
|
||||
fullTextStoplists = 21,
|
||||
messageTypes = 22,
|
||||
partitionFunctions = 23,
|
||||
partitionSchemes = 24,
|
||||
permissions = 25,
|
||||
queues = 26,
|
||||
remoteServiceBindings = 27,
|
||||
roleMembership = 28,
|
||||
rules = 29,
|
||||
scalarValuedFunctions = 30,
|
||||
searchPropertyLists = 31,
|
||||
securityPolicies = 32,
|
||||
sequences = 33,
|
||||
services = 34,
|
||||
signatures = 35,
|
||||
storedProcedures = 36,
|
||||
symmetricKeys = 37,
|
||||
synonyms = 38,
|
||||
tables = 39,
|
||||
tableValuedFunctions = 40,
|
||||
userDefinedDataTypes = 41,
|
||||
userDefinedTableTypes = 42,
|
||||
clrUserDefinedTypes = 43,
|
||||
users = 44,
|
||||
views = 45,
|
||||
xmlSchemaCollections = 46,
|
||||
audits = 47,
|
||||
credentials = 48,
|
||||
cryptographicProviders = 49,
|
||||
databaseAuditSpecifications = 50,
|
||||
databaseEncryptionKeys = 51,
|
||||
databaseScopedCredentials = 52,
|
||||
endpoints = 53,
|
||||
errorMessages = 54,
|
||||
eventNotifications = 55,
|
||||
eventSessions = 56,
|
||||
linkedServerLogins = 57,
|
||||
linkedServers = 58,
|
||||
logins = 59,
|
||||
masterKeys = 60,
|
||||
routes = 61,
|
||||
serverAuditSpecifications = 62,
|
||||
serverRoleMembership = 63,
|
||||
serverRoles = 64,
|
||||
serverTriggers = 65
|
||||
}
|
||||
|
||||
export interface SchemaCompareServicesProvider extends DataProvider {
|
||||
schemaCompare(sourceEndpointInfo: SchemaCompareEndpointInfo, targetEndpointInfo: SchemaCompareEndpointInfo, taskExecutionMode: TaskExecutionMode): Thenable<SchemaCompareResult>;
|
||||
schemaCompare(sourceEndpointInfo: SchemaCompareEndpointInfo, targetEndpointInfo: SchemaCompareEndpointInfo, taskExecutionMode: TaskExecutionMode, deploymentOptions: DeploymentOptions): Thenable<SchemaCompareResult>;
|
||||
schemaCompareGenerateScript(operationId: string, targetDatabaseName: string, scriptFilePath: string, taskExecutionMode: TaskExecutionMode): Thenable<ResultStatus>;
|
||||
schemaComparePublishChanges(operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: TaskExecutionMode): Thenable<ResultStatus>;
|
||||
schemaCompareGetDefaultOptions(): Thenable<SchemaCompareOptionsResult>;
|
||||
schemaCompareIncludeExcludeNode(operationId: string, diffEntry: DiffEntry, IncludeRequest: boolean, taskExecutionMode: TaskExecutionMode): Thenable<ResultStatus>;
|
||||
}
|
||||
|
||||
// Security service interfaces ------------------------------------------------------------------------
|
||||
|
||||
@@ -17,9 +17,11 @@ export interface ISchemaCompareService {
|
||||
_serviceBrand: any;
|
||||
|
||||
registerProvider(providerId: string, provider: azdata.SchemaCompareServicesProvider): void;
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode): void;
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode, deploymentOptions: azdata.DeploymentOptions): void;
|
||||
schemaCompareGenerateScript(operationId: string, targetDatabaseName: string, scriptFilePath: string, taskExecutionMode: azdata.TaskExecutionMode): void;
|
||||
schemaComparePublishChanges(operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): void;
|
||||
schemaCompareGetDefaultOptions(): void;
|
||||
schemaCompareIncludeExcludeNode(operationId: string, diffEntry: azdata.DiffEntry, includeRequest: boolean, taskExecutionMode: azdata.TaskExecutionMode): void;
|
||||
}
|
||||
|
||||
export class SchemaCompareService implements ISchemaCompareService {
|
||||
@@ -32,9 +34,9 @@ export class SchemaCompareService implements ISchemaCompareService {
|
||||
this._providers[providerId] = provider;
|
||||
}
|
||||
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.SchemaCompareResult> {
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode, deploymentOptions: azdata.DeploymentOptions): Thenable<azdata.SchemaCompareResult> {
|
||||
return this._runAction(sourceEndpointInfo.ownerUri, (runner) => {
|
||||
return runner.schemaCompare(sourceEndpointInfo, targetEndpointInfo, taskExecutionMode);
|
||||
return runner.schemaCompare(sourceEndpointInfo, targetEndpointInfo, taskExecutionMode, deploymentOptions);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -50,6 +52,18 @@ export class SchemaCompareService implements ISchemaCompareService {
|
||||
});
|
||||
}
|
||||
|
||||
schemaCompareGetDefaultOptions(): Thenable<azdata.SchemaCompareOptionsResult> {
|
||||
return this._runAction('', (runner) => {
|
||||
return runner.schemaCompareGetDefaultOptions();
|
||||
});
|
||||
}
|
||||
|
||||
schemaCompareIncludeExcludeNode(operationId: string, diffEntry: azdata.DiffEntry, includeRequest: boolean, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
|
||||
return this._runAction('', (runner) => {
|
||||
return runner.schemaCompareIncludeExcludeNode(operationId, diffEntry, includeRequest, taskExecutionMode);
|
||||
});
|
||||
}
|
||||
|
||||
private _runAction<T>(uri: string, action: (handler: azdata.SchemaCompareServicesProvider) => Thenable<T>): Thenable<T> {
|
||||
let providerId: string = this._connectionService.getProviderIdFromUri(uri);
|
||||
|
||||
|
||||
@@ -563,3 +563,72 @@ export enum SchemaCompareEndpointType {
|
||||
database = 0,
|
||||
dacpac = 1
|
||||
}
|
||||
|
||||
export enum SchemaObjectType {
|
||||
aggregates = 0,
|
||||
applicationRoles = 1,
|
||||
assemblies = 2,
|
||||
assemblyFiles = 3,
|
||||
asymmetricKeys = 4,
|
||||
brokerPriorities = 5,
|
||||
certificates = 6,
|
||||
columnEncryptionKeys = 7,
|
||||
columnMasterKeys = 8,
|
||||
contracts = 9,
|
||||
databaseOptions = 10,
|
||||
databaseRoles = 11,
|
||||
databaseTriggers = 12,
|
||||
defaults = 13,
|
||||
extendedProperties = 14,
|
||||
externalDataSources = 15,
|
||||
externalFileFormats = 16,
|
||||
externalTables = 17,
|
||||
filegroups = 18,
|
||||
fileTables = 19,
|
||||
fullTextCatalogs = 20,
|
||||
fullTextStoplists = 21,
|
||||
messageTypes = 22,
|
||||
partitionFunctions = 23,
|
||||
partitionSchemes = 24,
|
||||
permissions = 25,
|
||||
queues = 26,
|
||||
remoteServiceBindings = 27,
|
||||
roleMembership = 28,
|
||||
rules = 29,
|
||||
scalarValuedFunctions = 30,
|
||||
searchPropertyLists = 31,
|
||||
securityPolicies = 32,
|
||||
sequences = 33,
|
||||
services = 34,
|
||||
signatures = 35,
|
||||
storedProcedures = 36,
|
||||
symmetricKeys = 37,
|
||||
synonyms = 38,
|
||||
tables = 39,
|
||||
tableValuedFunctions = 40,
|
||||
userDefinedDataTypes = 41,
|
||||
userDefinedTableTypes = 42,
|
||||
clrUserDefinedTypes = 43,
|
||||
users = 44,
|
||||
views = 45,
|
||||
xmlSchemaCollections = 46,
|
||||
audits = 47,
|
||||
credentials = 48,
|
||||
cryptographicProviders = 49,
|
||||
databaseAuditSpecifications = 50,
|
||||
databaseEncryptionKeys = 51,
|
||||
databaseScopedCredentials = 52,
|
||||
endpoints = 53,
|
||||
errorMessages = 54,
|
||||
eventNotifications = 55,
|
||||
eventSessions = 56,
|
||||
linkedServerLogins = 57,
|
||||
linkedServers = 58,
|
||||
logins = 59,
|
||||
masterKeys = 60,
|
||||
routes = 61,
|
||||
serverAuditSpecifications = 62,
|
||||
serverRoleMembership = 63,
|
||||
serverRoles = 64,
|
||||
serverTriggers = 65
|
||||
}
|
||||
@@ -457,14 +457,20 @@ export class MainThreadDataProtocol implements MainThreadDataProtocolShape {
|
||||
public $registerSchemaCompareServicesProvider(providerId: string, handle: number): Promise<any> {
|
||||
const self = this;
|
||||
this._schemaCompareService.registerProvider(providerId, <azdata.SchemaCompareServicesProvider>{
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.SchemaCompareResult> {
|
||||
return self._proxy.$schemaCompare(handle, sourceEndpointInfo, targetEndpointInfo, taskExecutionMode);
|
||||
schemaCompare(sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode, schemaComapareOptions: azdata.DeploymentOptions): Thenable<azdata.SchemaCompareResult> {
|
||||
return self._proxy.$schemaCompare(handle, sourceEndpointInfo, targetEndpointInfo, taskExecutionMode, schemaComapareOptions);
|
||||
},
|
||||
schemaCompareGenerateScript(operationId: string, targetDatabaseName: string, scriptFilePath: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
|
||||
return self._proxy.$schemaCompareGenerateScript(handle, operationId, targetDatabaseName, scriptFilePath, taskExecutionMode);
|
||||
},
|
||||
schemaComparePublishChanges(operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
|
||||
return self._proxy.$schemaComparePublishChanges(handle, operationId, targetServerName, targetDatabaseName, taskExecutionMode);
|
||||
},
|
||||
schemaCompareGetDefaultOptions(): Thenable<azdata.SchemaCompareOptionsResult> {
|
||||
return self._proxy.$schemaCompareGetDefaultOptions(handle);
|
||||
},
|
||||
schemaCompareIncludeExcludeNode(operationId: string, diffEntry: azdata.DiffEntry, includeRequest: boolean, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> {
|
||||
return self._proxy.$schemaCompareIncludeExcludeNode(handle, operationId, diffEntry, includeRequest, taskExecutionMode);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -536,7 +536,8 @@ export function createApiFactory(
|
||||
extensions: extensions,
|
||||
SchemaUpdateAction: sqlExtHostTypes.SchemaUpdateAction,
|
||||
SchemaDifferenceType: sqlExtHostTypes.SchemaDifferenceType,
|
||||
SchemaCompareEndpointType: sqlExtHostTypes.SchemaCompareEndpointType
|
||||
SchemaCompareEndpointType: sqlExtHostTypes.SchemaCompareEndpointType,
|
||||
SchemaObjectType: sqlExtHostTypes.SchemaObjectType
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@@ -457,7 +457,7 @@ export abstract class ExtHostDataProtocolShape {
|
||||
/**
|
||||
* Schema compare
|
||||
*/
|
||||
$schemaCompare(handle: number, sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.SchemaCompareResult> { throw ni(); }
|
||||
$schemaCompare(handle: number, sourceEndpointInfo: azdata.SchemaCompareEndpointInfo, targetEndpointInfo: azdata.SchemaCompareEndpointInfo, taskExecutionMode: azdata.TaskExecutionMode, schemaComapareOptions: azdata.DeploymentOptions): Thenable<azdata.SchemaCompareResult> { throw ni(); }
|
||||
|
||||
/**
|
||||
* Schema compare generate script
|
||||
@@ -468,6 +468,17 @@ export abstract class ExtHostDataProtocolShape {
|
||||
* Schema compare publish changes
|
||||
*/
|
||||
$schemaComparePublishChanges(handle: number, operationId: string, targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.SchemaCompareResult> { throw ni(); }
|
||||
|
||||
/**
|
||||
* Schema compare get default options
|
||||
*/
|
||||
$schemaCompareGetDefaultOptions(handle: number): Thenable<azdata.SchemaCompareOptionsResult> { throw ni(); }
|
||||
|
||||
|
||||
/**
|
||||
* Schema comapre Include node
|
||||
*/
|
||||
$schemaCompareIncludeExcludeNode(handle: number, operationId: string, diffEntry: azdata.DiffEntry, includeRequest: boolean, taskExecutionMode: azdata.TaskExecutionMode): Thenable<azdata.ResultStatus> { throw ni(); }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user