mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Assessment core extension (#10154)
This commit is contained in:
@@ -678,26 +678,26 @@ export namespace SchemaCompareCancellationRequest {
|
||||
|
||||
// ------------------------------- <Schema Compare> -----------------------------
|
||||
|
||||
// ------------------------------- <Sql Assessment> -----------------------------
|
||||
/// ------------------------------- <Sql Assessment> -----------------------------
|
||||
|
||||
export interface SqlAssessmentParams {
|
||||
ownerUri: string;
|
||||
targetType: mssql.SqlAssessmentTargetType
|
||||
targetType: azdata.sqlAssessment.SqlAssessmentTargetType
|
||||
}
|
||||
|
||||
export interface GenerateSqlAssessmentScriptParams {
|
||||
items: mssql.SqlAssessmentResultItem[];
|
||||
items: azdata.SqlAssessmentResultItem[];
|
||||
taskExecutionMode: azdata.TaskExecutionMode;
|
||||
targetServerName: string;
|
||||
targetDatabaseName: string;
|
||||
}
|
||||
|
||||
export namespace SqlAssessmentInvokeRequest {
|
||||
export const type = new RequestType<SqlAssessmentParams, mssql.SqlAssessmentResult, void, void>('assessment/invoke');
|
||||
export const type = new RequestType<SqlAssessmentParams, azdata.SqlAssessmentResult, void, void>('assessment/invoke');
|
||||
}
|
||||
|
||||
export namespace GetSqlAssessmentItemsRequest {
|
||||
export const type = new RequestType<SqlAssessmentParams, mssql.SqlAssessmentResult, void, void>('assessment/getAssessmentItems');
|
||||
export const type = new RequestType<SqlAssessmentParams, azdata.SqlAssessmentResult, void, void>('assessment/getAssessmentItems');
|
||||
}
|
||||
|
||||
export namespace GenerateSqlAssessmentScriptRequest {
|
||||
@@ -706,7 +706,6 @@ export namespace GenerateSqlAssessmentScriptRequest {
|
||||
|
||||
// ------------------------------- <Sql Assessment> -----------------------------
|
||||
|
||||
|
||||
// ------------------------------- <Serialization> -----------------------------
|
||||
export namespace SerializeDataStartRequest {
|
||||
export const type = new RequestType<azdata.SerializeDataStartRequestParams, azdata.SerializeDataResult, void, void>('serialize/start');
|
||||
|
||||
@@ -746,7 +746,7 @@ export class AgentServicesFeature extends SqlOpsFeature<undefined> {
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
// Job management methods
|
||||
return azdata.dataprotocol.registerAgentServicesProvider({
|
||||
providerId: client.providerId,
|
||||
getJobs,
|
||||
@@ -852,3 +852,72 @@ export class SerializationFeature extends SqlOpsFeature<undefined> {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class SqlAssessmentServicesFeature extends SqlOpsFeature<undefined> {
|
||||
private static readonly messagesTypes: RPCMessageType[] = [
|
||||
contracts.SqlAssessmentInvokeRequest.type,
|
||||
contracts.GetSqlAssessmentItemsRequest.type
|
||||
];
|
||||
constructor(client: SqlOpsDataClient) {
|
||||
super(client, SqlAssessmentServicesFeature.messagesTypes);
|
||||
}
|
||||
|
||||
public fillClientCapabilities(capabilities: ClientCapabilities): void {
|
||||
}
|
||||
|
||||
public initialize(capabilities: ServerCapabilities): void {
|
||||
this.register(this.messages, {
|
||||
id: UUID.generateUuid(),
|
||||
registerOptions: undefined
|
||||
});
|
||||
}
|
||||
|
||||
protected registerProvider(options: undefined): Disposable {
|
||||
const client = this._client;
|
||||
|
||||
let assessmentInvoke = async (ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult> => {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return client.sendRequest(contracts.SqlAssessmentInvokeRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
client.logFailedRequest(contracts.SqlAssessmentInvokeRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
let getAssessmentItems = async (ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult> => {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return client.sendRequest(contracts.GetSqlAssessmentItemsRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
client.logFailedRequest(contracts.GetSqlAssessmentItemsRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
let generateAssessmentScript = async (items: azdata.SqlAssessmentResultItem[]): Promise<azdata.ResultStatus> => {
|
||||
let params: contracts.GenerateSqlAssessmentScriptParams = { items: items, taskExecutionMode: azdata.TaskExecutionMode.script, targetServerName: '', targetDatabaseName: '' };
|
||||
try {
|
||||
return client.sendRequest(contracts.GenerateSqlAssessmentScriptRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
client.logFailedRequest(contracts.GenerateSqlAssessmentScriptRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
return azdata.dataprotocol.registerSqlAssessmentServicesProvider({
|
||||
providerId: client.providerId,
|
||||
assessmentInvoke,
|
||||
getAssessmentItems,
|
||||
generateAssessmentScript
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
36
extensions/mssql/src/mssql.d.ts
vendored
36
extensions/mssql/src/mssql.d.ts
vendored
@@ -483,40 +483,10 @@ export interface ListRegisteredServersResult {
|
||||
|
||||
// SqlAssessment interfaces -----------------------------------------------------------------------
|
||||
|
||||
export const enum SqlAssessmentTargetType {
|
||||
Server = 1,
|
||||
Database = 2
|
||||
}
|
||||
|
||||
export const enum SqlAssessmentResultItemKind {
|
||||
RealResult = 0,
|
||||
Warning = 1,
|
||||
Error = 2
|
||||
}
|
||||
|
||||
export interface SqlAssessmentResultItem {
|
||||
rulesetVersion: string;
|
||||
rulesetName: string;
|
||||
targetType: SqlAssessmentTargetType;
|
||||
targetName: string;
|
||||
checkId: string;
|
||||
tags: string[];
|
||||
displayName: string;
|
||||
description: string;
|
||||
message: string;
|
||||
helpLink: string;
|
||||
level: string;
|
||||
timestamp: string;
|
||||
kind: SqlAssessmentResultItemKind;
|
||||
}
|
||||
|
||||
export interface SqlAssessmentResult extends azdata.ResultStatus {
|
||||
items: SqlAssessmentResultItem[];
|
||||
apiVersion: string;
|
||||
}
|
||||
|
||||
export interface ISqlAssessmentService {
|
||||
assessmentInvoke(ownerUri: string, targetType: SqlAssessmentTargetType): Promise<SqlAssessmentResult>;
|
||||
getAssessmentItems(ownerUri: string, targetType: SqlAssessmentTargetType): Promise<SqlAssessmentResult>;
|
||||
generateAssessmentScript(items: SqlAssessmentResultItem[], targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Promise<azdata.ResultStatus>;
|
||||
assessmentInvoke(ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult>;
|
||||
getAssessmentItems(ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult>;
|
||||
generateAssessmentScript(items: azdata.SqlAssessmentResultItem[], targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Promise<azdata.ResultStatus>;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ export class SqlAssessmentService implements mssql.ISqlAssessmentService {
|
||||
private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) {
|
||||
context.registerService(constants.SqlAssessmentService, this);
|
||||
}
|
||||
async assessmentInvoke(ownerUri: string, targetType: mssql.SqlAssessmentTargetType): Promise<mssql.SqlAssessmentResult | undefined> {
|
||||
async assessmentInvoke(ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult | undefined> {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.SqlAssessmentInvokeRequest.type, params);
|
||||
@@ -41,7 +41,7 @@ export class SqlAssessmentService implements mssql.ISqlAssessmentService {
|
||||
|
||||
return undefined;
|
||||
}
|
||||
async getAssessmentItems(ownerUri: string, targetType: mssql.SqlAssessmentTargetType): Promise<mssql.SqlAssessmentResult | undefined> {
|
||||
async getAssessmentItems(ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult | undefined> {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.GetSqlAssessmentItemsRequest.type, params);
|
||||
@@ -52,7 +52,7 @@ export class SqlAssessmentService implements mssql.ISqlAssessmentService {
|
||||
|
||||
return undefined;
|
||||
}
|
||||
async generateAssessmentScript(items: mssql.SqlAssessmentResultItem[], targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Promise<azdata.ResultStatus | undefined> {
|
||||
async generateAssessmentScript(items: azdata.SqlAssessmentResultItem[], targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Promise<azdata.ResultStatus | undefined> {
|
||||
let params: contracts.GenerateSqlAssessmentScriptParams = { items: items, targetServerName: targetServerName, targetDatabaseName: targetDatabaseName, taskExecutionMode: taskExecutionMode };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.GenerateSqlAssessmentScriptRequest.type, params);
|
||||
|
||||
@@ -11,7 +11,7 @@ import * as path from 'path';
|
||||
import { getCommonLaunchArgsAndCleanupOldLogFiles } from './utils';
|
||||
import { Telemetry, LanguageClientErrorHandler } from './telemetry';
|
||||
import { SqlOpsDataClient, ClientOptions } from 'dataprotocol-client';
|
||||
import { TelemetryFeature, AgentServicesFeature, SerializationFeature, AccountFeature } from './features';
|
||||
import { TelemetryFeature, AgentServicesFeature, SerializationFeature, AccountFeature, SqlAssessmentServicesFeature } from './features';
|
||||
import { CredentialStore } from './credentialstore/credentialstore';
|
||||
import { AzureResourceProvider } from './resourceProvider/resourceProvider';
|
||||
import { SchemaCompareService } from './schemaCompare/schemaCompareService';
|
||||
@@ -155,6 +155,7 @@ function getClientOptions(context: AppContext): ClientOptions {
|
||||
AccountFeature,
|
||||
AgentServicesFeature,
|
||||
SerializationFeature,
|
||||
SqlAssessmentServicesFeature,
|
||||
SchemaCompareService.asFeature(context),
|
||||
LanguageExtensionService.asFeature(context),
|
||||
DacFxService.asFeature(context),
|
||||
|
||||
Reference in New Issue
Block a user