Assessment core extension (#10154)

This commit is contained in:
Vladimir Chernov
2020-05-29 01:17:41 +03:00
committed by GitHub
parent 0d544660e0
commit 8288360cc4
47 changed files with 1813 additions and 58 deletions

View File

@@ -168,7 +168,11 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
this._proxy.$registerAgentServicesProvider(provider.providerId, provider.handle);
return rt;
}
$registerSqlAssessmentServiceProvider(provider: azdata.SqlAssessmentServicesProvider): vscode.Disposable {
let rt = this.registerProvider(provider, DataProviderType.SqlAssessmentServicesProvider);
this._proxy.$registerSqlAssessmentServicesProvider(provider.providerId, provider.handle);
return rt;
}
$registerCapabilitiesServiceProvider(provider: azdata.CapabilitiesProvider): vscode.Disposable {
let rt = this.registerProvider(provider, DataProviderType.CapabilitiesProvider);
this._proxy.$registerCapabilitiesServiceProvider(provider.providerId, provider.handle);
@@ -839,4 +843,17 @@ export class ExtHostDataProtocol extends ExtHostDataProtocolShape {
public $continueSerialization(handle: number, requestParams: azdata.SerializeDataContinueRequestParams): Thenable<azdata.SerializeDataResult> {
return this._resolveProvider<azdata.SerializationProvider>(handle).continueSerialization(requestParams);
}
// Assessment methods
public $assessmentInvoke(handle: number, ownerUri: string, targetType: number): Thenable<azdata.SqlAssessmentResult> {
return this._resolveProvider<azdata.SqlAssessmentServicesProvider>(handle).assessmentInvoke(ownerUri, targetType);
}
public $getAssessmentItems(handle: number, ownerUri: string, targetType: number): Thenable<azdata.SqlAssessmentResult> {
return this._resolveProvider<azdata.SqlAssessmentServicesProvider>(handle).getAssessmentItems(ownerUri, targetType);
}
public $generateAssessmentScript(handle: number, items: azdata.SqlAssessmentResultItem[]): Thenable<azdata.ResultStatus> {
return this._resolveProvider<azdata.SqlAssessmentServicesProvider>(handle).generateAssessmentScript(items);
}
}

View File

@@ -364,6 +364,10 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
return extHostDataProvider.$registerSerializationProvider(provider);
};
let registerSqlAssessmentServicesProvider = (provider: azdata.SqlAssessmentServicesProvider): vscode.Disposable => {
return extHostDataProvider.$registerSqlAssessmentServiceProvider(provider);
};
// namespace: dataprotocol
const dataprotocol: typeof azdata.dataprotocol = {
registerBackupProvider,
@@ -382,6 +386,7 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
registerAgentServicesProvider,
registerCapabilitiesServiceProvider,
registerSerializationProvider,
registerSqlAssessmentServicesProvider,
onDidChangeLanguageFlavor(listener: (e: azdata.DidChangeLanguageFlavorParams) => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) {
return extHostDataProvider.onDidChangeLanguageFlavor(listener, thisArgs, disposables);
},
@@ -510,6 +515,11 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
NotebookChangeKind: sqlExtHostTypes.NotebookChangeKind
};
const sqlAssessment: typeof azdata.sqlAssessment = {
SqlAssessmentResultItemKind: sqlExtHostTypes.SqlAssessmentResultItemKind,
SqlAssessmentTargetType: sqlExtHostTypes.SqlAssessmentTargetType
};
return {
accounts,
connection,
@@ -556,7 +566,8 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
ExtensionNodeType: sqlExtHostTypes.ExtensionNodeType,
ColumnSizingMode: sqlExtHostTypes.ColumnSizingMode,
DatabaseEngineEdition: sqlExtHostTypes.DatabaseEngineEdition,
TabOrientation: sqlExtHostTypes.TabOrientation
TabOrientation: sqlExtHostTypes.TabOrientation,
sqlAssessment
};
}
};

View File

@@ -488,6 +488,26 @@ export abstract class ExtHostDataProtocolShape {
* Serialization continuation request
*/
$continueSerialization(handle: number, requestParams: azdata.SerializeDataContinueRequestParams): Thenable<azdata.SerializeDataResult> { throw ni(); }
/**
* SQL Assessment Section
*/
/**
* Perform an assessment
*/
$assessmentInvoke(handle: number, connectionUri: string, targetType: number): Thenable<azdata.SqlAssessmentResult> { throw ni(); }
/**
* Get applicable assessment rules
*/
$getAssessmentItems(handle: number, connectionUri: string, targetType: number): Thenable<azdata.SqlAssessmentResult> { throw ni(); }
/**
* Generate an assessment script based on recent results
*/
$generateAssessmentScript(handle: number, items: azdata.SqlAssessmentResultItem[]): Thenable<azdata.ResultStatus> { throw ni(); }
}
/**
@@ -551,6 +571,7 @@ export interface MainThreadDataProtocolShape extends IDisposable {
$registerAdminServicesProvider(providerId: string, handle: number): Promise<any>;
$registerAgentServicesProvider(providerId: string, handle: number): Promise<any>;
$registerSerializationProvider(providerId: string, handle: number): Promise<any>;
$registerSqlAssessmentServicesProvider(providerId: string, handle: number): Promise<any>;
$unregisterProvider(handle: number): Promise<any>;
$onConnectionComplete(handle: number, connectionInfoSummary: azdata.ConnectionInfoSummary): void;
$onIntelliSenseCacheComplete(handle: number, connectionUri: string): void;

View File

@@ -350,7 +350,8 @@ export enum DataProviderType {
CapabilitiesProvider = 'CapabilitiesProvider',
ObjectExplorerNodeProvider = 'ObjectExplorerNodeProvider',
SerializationProvider = 'SerializationProvider',
IconProvider = 'IconProvider'
IconProvider = 'IconProvider',
SqlAssessmentServicesProvider = 'SqlAssessmentServicesProvider'
}
export enum DeclarativeDataType {
@@ -847,12 +848,12 @@ export interface TabbedPanelLayout {
alwaysShowTabs: boolean;
}
export const enum SqlAssessmentTargetType {
export enum SqlAssessmentTargetType {
Server = 1,
Database = 2
}
export const enum SqlAssessmentResultItemKind {
export enum SqlAssessmentResultItemKind {
RealResult = 0,
Warning = 1,
Error = 2