mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Add migration service calls to migration wizard (#12090)
* Hook up migration apis WIP * WIP 2 * WIP 3 * Fix build breaks * Break 2 * WIP 4 * SKU recommendation page work * WIP 5 * A few minor fixes * Merge main * Add back assessment dialog * Address feedback Co-authored-by: Amir Omidi <amomidi@microsoft.com>
This commit is contained in:
@@ -41,6 +41,7 @@ export const SchemaCompareService = 'schemaCompareService';
|
||||
export const LanguageExtensionService = 'languageExtensionService';
|
||||
export const objectExplorerPrefix: string = 'objectexplorer://';
|
||||
export const SqlAssessmentService = 'sqlAssessmentService';
|
||||
export const SqlMigrationService = 'sqlMigrationService';
|
||||
export const NotebookConvertService = 'notebookConvertService';
|
||||
|
||||
export enum BuiltInCommands {
|
||||
|
||||
@@ -1001,3 +1001,19 @@ export namespace ProfilerSessionCreatedNotification {
|
||||
}
|
||||
|
||||
// ------------------------------- < SQL Profiler > ------------------------------------
|
||||
|
||||
/// ------------------------------- <Sql Migration> -----------------------------
|
||||
|
||||
export interface SqlAssessmentResult extends azdata.ResultStatus {
|
||||
items: mssql.SqlMigrationAssessmentResultItem[];
|
||||
}
|
||||
|
||||
export interface SqlMigrationAssessmentParams {
|
||||
ownerUri: string;
|
||||
}
|
||||
|
||||
export namespace GetSqlMigrationAssessmentItemsRequest {
|
||||
export const type = new RequestType<SqlAssessmentParams, SqlAssessmentResult, void, void>('migration/getassessments');
|
||||
}
|
||||
|
||||
// ------------------------------- <Sql Migration> -----------------------------
|
||||
|
||||
42
extensions/mssql/src/mssql.d.ts
vendored
42
extensions/mssql/src/mssql.d.ts
vendored
@@ -43,6 +43,8 @@ export interface IExtension {
|
||||
readonly dacFx: IDacFxService;
|
||||
|
||||
readonly sqlAssessment: ISqlAssessmentService;
|
||||
|
||||
readonly sqlMigration: ISqlMigrationService;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -495,3 +497,43 @@ export interface ISqlAssessmentService {
|
||||
getAssessmentItems(ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult>;
|
||||
generateAssessmentScript(items: azdata.SqlAssessmentResultItem[], targetServerName: string, targetDatabaseName: string, taskExecutionMode: azdata.TaskExecutionMode): Promise<azdata.ResultStatus>;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sql Migration
|
||||
*/
|
||||
|
||||
// SqlMigration interfaces -----------------------------------------------------------------------
|
||||
|
||||
export interface SqlMigrationImpactedObjectInfo {
|
||||
name: string;
|
||||
impactDetail: string;
|
||||
objectType: string;
|
||||
}
|
||||
|
||||
export interface SqlMigrationAssessmentResultItem {
|
||||
rulesetVersion: string;
|
||||
rulesetName: string;
|
||||
targetType: azdata.sqlAssessment.SqlAssessmentTargetType;
|
||||
targetName: string;
|
||||
checkId: string;
|
||||
tags: string[];
|
||||
displayName: string;
|
||||
description: string;
|
||||
helpLink: string;
|
||||
level: string;
|
||||
timestamp: string;
|
||||
kind: azdata.sqlAssessment.SqlAssessmentResultItemKind;
|
||||
message: string;
|
||||
appliesToMigrationTargetPlatform: string;
|
||||
issueCategory: string;
|
||||
impactedObjects: SqlMigrationImpactedObjectInfo[];
|
||||
}
|
||||
|
||||
export interface SqlMigrationAssessmentResult extends azdata.ResultStatus {
|
||||
items: SqlMigrationAssessmentResultItem[];
|
||||
}
|
||||
|
||||
export interface ISqlMigrationService {
|
||||
getAssessments(ownerUri: string): Promise<SqlMigrationAssessmentResult | undefined>;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { AppContext } from './appContext';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService, ISqlAssessmentService } from './mssql';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService, ISqlAssessmentService, ISqlMigrationService } from './mssql';
|
||||
import * as constants from './constants';
|
||||
import { MssqlObjectExplorerNodeProvider } from './objectExplorerNodeProvider/objectExplorerNodeProvider';
|
||||
import * as azdata from 'azdata';
|
||||
@@ -33,6 +33,9 @@ export function createMssqlApi(context: AppContext): IExtension {
|
||||
},
|
||||
get sqlAssessment() {
|
||||
return context.getService<ISqlAssessmentService>(constants.SqlAssessmentService);
|
||||
},
|
||||
get sqlMigration() {
|
||||
return context.getService<ISqlMigrationService>(constants.SqlMigrationService);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
43
extensions/mssql/src/sqlMigration/sqlMigrationService.ts
Normal file
43
extensions/mssql/src/sqlMigration/sqlMigrationService.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* 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 contracts from '../contracts';
|
||||
|
||||
export class SqlMigrationService implements mssql.ISqlMigrationService {
|
||||
public static asFeature(context: AppContext): ISqlOpsFeature {
|
||||
return class extends SqlMigrationService {
|
||||
constructor(client: SqlOpsDataClient) {
|
||||
super(context, client);
|
||||
}
|
||||
|
||||
fillClientCapabilities(capabilities: ClientCapabilities): void {
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) {
|
||||
context.registerService(constants.SqlMigrationService, this);
|
||||
}
|
||||
|
||||
async getAssessments(ownerUri: string): Promise<mssql.SqlMigrationAssessmentResult | undefined> {
|
||||
let params: contracts.SqlMigrationAssessmentParams = { ownerUri: ownerUri };
|
||||
try {
|
||||
return this.client.sendRequest(contracts.GetSqlMigrationAssessmentItemsRequest.type, params);
|
||||
}
|
||||
catch (e) {
|
||||
this.client.logFailedRequest(contracts.GetSqlMigrationAssessmentItemsRequest.type, e);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import * as nls from 'vscode-nls';
|
||||
import { LanguageExtensionService } from './languageExtension/languageExtensionService';
|
||||
import { SqlAssessmentService } from './sqlAssessment/sqlAssessmentService';
|
||||
import { NotebookConvertService } from './notebookConvert/notebookConvertService';
|
||||
import { SqlMigrationService } from './sqlMigration/sqlMigrationService';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||
@@ -163,7 +164,8 @@ function getClientOptions(context: AppContext): ClientOptions {
|
||||
CmsService.asFeature(context),
|
||||
SqlAssessmentService.asFeature(context),
|
||||
NotebookConvertService.asFeature(context),
|
||||
ProfilerFeature
|
||||
ProfilerFeature,
|
||||
SqlMigrationService.asFeature(context),
|
||||
],
|
||||
outputChannel: new CustomOutputChannel()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user