mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-11 18:48:33 -05:00
@@ -39,6 +39,7 @@ export const SchemaCompareService = 'schemaCompareService';
|
||||
export const LanguageExtensionService = 'languageExtensionService';
|
||||
export const objectExplorerPrefix: string = 'objectexplorer://';
|
||||
export const ViewType = 'view';
|
||||
export const SqlAssessmentService = 'sqlAssessmentService';
|
||||
|
||||
export enum BuiltInCommands {
|
||||
SetContext = 'setContext'
|
||||
|
||||
@@ -674,6 +674,35 @@ export namespace SchemaCompareCancellationRequest {
|
||||
|
||||
// ------------------------------- <Schema Compare> -----------------------------
|
||||
|
||||
// ------------------------------- <Sql Assessment> -----------------------------
|
||||
|
||||
export interface SqlAssessmentParams {
|
||||
ownerUri: string;
|
||||
targetType: mssql.SqlAssessmentTargetType
|
||||
}
|
||||
|
||||
export interface GenerateSqlAssessmentScriptParams {
|
||||
items: mssql.SqlAssessmentResultItem[];
|
||||
taskExecutionMode: azdata.TaskExecutionMode;
|
||||
targetServerName: string;
|
||||
targetDatabaseName: string;
|
||||
}
|
||||
|
||||
export namespace SqlAssessmentInvokeRequest {
|
||||
export const type = new RequestType<SqlAssessmentParams, mssql.SqlAssessmentResult, void, void>('assessment/invoke');
|
||||
}
|
||||
|
||||
export namespace GetSqlAssessmentItemsRequest {
|
||||
export const type = new RequestType<SqlAssessmentParams, mssql.SqlAssessmentResult, void, void>('assessment/getAssessmentItems');
|
||||
}
|
||||
|
||||
export namespace GenerateSqlAssessmentScriptRequest {
|
||||
export const type = new RequestType<GenerateSqlAssessmentScriptParams, azdata.ResultStatus, void, void>('assessment/generateScript');
|
||||
}
|
||||
|
||||
// ------------------------------- <Sql Assessment> -----------------------------
|
||||
|
||||
|
||||
// ------------------------------- <Serialization> -----------------------------
|
||||
export namespace SerializeDataStartRequest {
|
||||
export const type = new RequestType<azdata.SerializeDataStartRequestParams, azdata.SerializeDataResult, void, void>('serialize/start');
|
||||
|
||||
46
extensions/mssql/src/mssql.d.ts
vendored
46
extensions/mssql/src/mssql.d.ts
vendored
@@ -41,6 +41,8 @@ export interface IExtension {
|
||||
readonly languageExtension: ILanguageExtensionService;
|
||||
|
||||
readonly dacFx: IDacFxService;
|
||||
|
||||
readonly sqlAssessment: ISqlAssessmentService;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -463,3 +465,47 @@ export interface ListRegisteredServersResult {
|
||||
registeredServerGroups: Array<RegisteredServerGroup>;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
/**
|
||||
* Sql Assessment
|
||||
*/
|
||||
|
||||
// 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>;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { AppContext } from './appContext';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService } from './mssql';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService, ISqlAssessmentService } from './mssql';
|
||||
import * as constants from './constants';
|
||||
import { MssqlObjectExplorerNodeProvider } from './objectExplorerNodeProvider/objectExplorerNodeProvider';
|
||||
import * as azdata from 'azdata';
|
||||
@@ -30,6 +30,9 @@ export function createMssqlApi(context: AppContext): IExtension {
|
||||
return <any>oeProvider.findSqlClusterNodeByContext(explorerContext);
|
||||
}
|
||||
};
|
||||
},
|
||||
get sqlAssessment() {
|
||||
return context.getService<ISqlAssessmentService>(constants.SqlAssessmentService);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
67
extensions/mssql/src/sqlAssessment/sqlAssessmentService.ts
Normal file
67
extensions/mssql/src/sqlAssessment/sqlAssessmentService.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as mssql from '../mssql';
|
||||
import { AppContext } from '../appContext';
|
||||
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
|
||||
import { ClientCapabilities } from 'vscode-languageclient';
|
||||
import * as constants from '../constants';
|
||||
import * as azdata from 'azdata';
|
||||
import * as contracts from '../contracts';
|
||||
|
||||
|
||||
export class SqlAssessmentService implements mssql.ISqlAssessmentService {
|
||||
public static asFeature(context: AppContext): ISqlOpsFeature {
|
||||
return class extends SqlAssessmentService {
|
||||
constructor(client: SqlOpsDataClient) {
|
||||
super(context, client);
|
||||
}
|
||||
|
||||
fillClientCapabilities(capabilities: ClientCapabilities): void {
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) {
|
||||
context.registerService(constants.SqlAssessmentService, this);
|
||||
}
|
||||
async assessmentInvoke(ownerUri: string, targetType: mssql.SqlAssessmentTargetType): Promise<mssql.SqlAssessmentResult | undefined> {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.SqlAssessmentInvokeRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
this.client.logFailedRequest(contracts.SqlAssessmentInvokeRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
async getAssessmentItems(ownerUri: string, targetType: mssql.SqlAssessmentTargetType): Promise<mssql.SqlAssessmentResult | undefined> {
|
||||
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.GetSqlAssessmentItemsRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
this.client.logFailedRequest(contracts.GetSqlAssessmentItemsRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
async generateAssessmentScript(items: mssql.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);
|
||||
}
|
||||
catch (e) {
|
||||
this.client.logFailedRequest(contracts.GenerateSqlAssessmentScriptRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import { CompletionExtensionParams, CompletionExtLoadRequest } from './contracts
|
||||
import { promises as fs } from 'fs';
|
||||
import * as nls from 'vscode-nls';
|
||||
import { LanguageExtensionService } from './languageExtension/languageExtensionService';
|
||||
import { SqlAssessmentService } from './sqlAssessment/sqlAssessmentService';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||
@@ -157,7 +158,8 @@ function getClientOptions(context: AppContext): ClientOptions {
|
||||
SchemaCompareService.asFeature(context),
|
||||
LanguageExtensionService.asFeature(context),
|
||||
DacFxService.asFeature(context),
|
||||
CmsService.asFeature(context)
|
||||
CmsService.asFeature(context),
|
||||
SqlAssessmentService.asFeature(context)
|
||||
],
|
||||
outputChannel: new CustomOutputChannel()
|
||||
};
|
||||
|
||||
@@ -842,3 +842,14 @@ export interface TabbedPanelLayout {
|
||||
showIcon: boolean;
|
||||
alwaysShowTabs: boolean;
|
||||
}
|
||||
|
||||
export const enum SqlAssessmentTargetType {
|
||||
Server = 1,
|
||||
Database = 2
|
||||
}
|
||||
|
||||
export const enum SqlAssessmentResultItemKind {
|
||||
RealResult = 0,
|
||||
Warning = 1,
|
||||
Error = 2
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user