mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-13 03:28:33 -05:00
Initial changes for adding SqlProjectsService (#21967)
* Add SqlProjectsService * cleanup * reorder imports * undo changes in project.ts for now to fix tests
This commit is contained in:
@@ -16,6 +16,7 @@ export const sqlProviderName = 'MSSQL';
|
||||
export const ObjectExplorerService = 'objectexplorer';
|
||||
export const CmsService = 'cmsService';
|
||||
export const DacFxService = 'dacfxService';
|
||||
export const SqlProjectsService = 'sqlProjectsService';
|
||||
export const SchemaCompareService = 'schemaCompareService';
|
||||
export const LanguageExtensionService = 'languageExtensionService';
|
||||
export const objectExplorerPrefix: string = 'objectexplorer://';
|
||||
|
||||
@@ -601,6 +601,22 @@ export namespace SavePublishProfileRequest {
|
||||
|
||||
// ------------------------------- </ DacFx > ------------------------------------
|
||||
|
||||
// ------------------------------- < Sql Projects > ------------------------------------
|
||||
|
||||
export namespace OpenSqlProjectRequest {
|
||||
export const type = new RequestType<SqlProjectParams, azdata.ResultStatus, void, void>('sqlProjects/openProject');
|
||||
}
|
||||
|
||||
export namespace GetCrossPlatformCompatiblityRequest {
|
||||
export const type = new RequestType<SqlProjectParams, mssql.GetCrossPlatformCompatiblityResult, void, void>('sqlProjects/getCrossPlatformCompatibility');
|
||||
}
|
||||
|
||||
export interface SqlProjectParams {
|
||||
projectUri: string;
|
||||
}
|
||||
|
||||
// ------------------------------- </ Sql Projects > -----------------------------------
|
||||
|
||||
// ------------------------------- <CMS> ----------------------------------------
|
||||
|
||||
|
||||
|
||||
15
extensions/mssql/src/mssql.d.ts
vendored
15
extensions/mssql/src/mssql.d.ts
vendored
@@ -40,6 +40,8 @@ declare module 'mssql' {
|
||||
|
||||
readonly dacFx: IDacFxService;
|
||||
|
||||
readonly sqlProjects: ISqlProjectsService;
|
||||
|
||||
readonly sqlAssessment: ISqlAssessmentService;
|
||||
|
||||
readonly sqlMigration: ISqlMigrationService;
|
||||
@@ -314,6 +316,19 @@ declare module 'mssql' {
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region --- Sql Projects
|
||||
|
||||
export interface ISqlProjectsService {
|
||||
openProject(projectUri: string): Promise<azdata.ResultStatus>;
|
||||
getCrossPlatformCompatiblityRequest(projectUri: string): Promise<GetCrossPlatformCompatiblityResult>;
|
||||
}
|
||||
|
||||
export interface GetCrossPlatformCompatiblityResult extends azdata.ResultStatus {
|
||||
isCrossPlatformCompatible: boolean;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region --- Language Extensibility
|
||||
export interface ExternalLanguageContent {
|
||||
pathToExtension: string;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { AppContext } from './appContext';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, ILanguageExtensionService, ISqlAssessmentService, ISqlMigrationService, IAzureBlobService, ITdeMigrationService } from 'mssql';
|
||||
import { IExtension, ICmsService, IDacFxService, ISqlProjectsService, ISchemaCompareService, ILanguageExtensionService, ISqlAssessmentService, ISqlMigrationService, IAzureBlobService, ITdeMigrationService } from 'mssql';
|
||||
import * as constants from './constants';
|
||||
import { SqlToolsServer } from './sqlToolsServer';
|
||||
|
||||
@@ -19,6 +19,9 @@ export function createMssqlApi(context: AppContext, sqlToolsServer: SqlToolsServ
|
||||
get dacFx() {
|
||||
return context.getService<IDacFxService>(constants.DacFxService);
|
||||
},
|
||||
get sqlProjects() {
|
||||
return context.getService<ISqlProjectsService>(constants.SqlProjectsService);
|
||||
},
|
||||
get schemaCompare() {
|
||||
return context.getService<ISchemaCompareService>(constants.SchemaCompareService);
|
||||
},
|
||||
|
||||
57
extensions/mssql/src/sqlProjects/sqlProjectsService.ts
Normal file
57
extensions/mssql/src/sqlProjects/sqlProjectsService.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* 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 * as constants from '../constants';
|
||||
import * as Utils from '../utils';
|
||||
import * as azdata from 'azdata';
|
||||
import * as contracts from '../contracts';
|
||||
import { AppContext } from '../appContext';
|
||||
import { ISqlOpsFeature, SqlOpsDataClient } from 'dataprotocol-client';
|
||||
import { ClientCapabilities } from 'vscode-languageclient';
|
||||
|
||||
export class SqlProjectsService implements mssql.ISqlProjectsService {
|
||||
public static asFeature(context: AppContext): ISqlOpsFeature {
|
||||
return class extends SqlProjectsService {
|
||||
constructor(client: SqlOpsDataClient) {
|
||||
super(context, client);
|
||||
}
|
||||
|
||||
fillClientCapabilities(capabilities: ClientCapabilities): void {
|
||||
Utils.ensure(capabilities, 'sqlProjects')!.sqlProjects = true;
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) {
|
||||
context.registerService(constants.SqlProjectsService, this);
|
||||
}
|
||||
|
||||
|
||||
public async openProject(projectUri: string): Promise<azdata.ResultStatus> {
|
||||
const params: contracts.SqlProjectParams = { projectUri };
|
||||
try {
|
||||
const result = await this.client.sendRequest(contracts.OpenSqlProjectRequest.type, params);
|
||||
return result;
|
||||
} catch (e) {
|
||||
this.client.logFailedRequest(contracts.OpenSqlProjectRequest.type, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
public async getCrossPlatformCompatiblityRequest(projectUri: string): Promise<mssql.GetCrossPlatformCompatiblityResult> {
|
||||
const params: contracts.SqlProjectParams = { projectUri };
|
||||
try {
|
||||
const result = await this.client.sendRequest(contracts.GetCrossPlatformCompatiblityRequest.type, params);
|
||||
return result;
|
||||
} catch (e) {
|
||||
this.client.logFailedRequest(contracts.GetCrossPlatformCompatiblityRequest.type, e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import { SqlCredentialService } from './credentialstore/sqlCredentialService';
|
||||
import { AzureBlobService } from './azureBlob/azureBlobService';
|
||||
import { ErrorDiagnosticsProvider } from './errorDiagnostics/errorDiagnosticsProvider';
|
||||
import { TdeMigrationService } from './tdeMigration/tdeMigrationService';
|
||||
import { SqlProjectsService } from './sqlProjects/sqlProjectsService';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||
@@ -188,6 +189,7 @@ function getClientOptions(context: AppContext): ClientOptions {
|
||||
SchemaCompareService.asFeature(context),
|
||||
LanguageExtensionService.asFeature(context),
|
||||
DacFxService.asFeature(context),
|
||||
SqlProjectsService.asFeature(context),
|
||||
CmsService.asFeature(context),
|
||||
SqlAssessmentService.asFeature(context),
|
||||
NotebookConvertService.asFeature(context),
|
||||
|
||||
@@ -302,6 +302,14 @@ export async function getSchemaCompareService(): Promise<ISchemaCompareService>
|
||||
}
|
||||
}
|
||||
|
||||
export async function getSqlProjectsService(): Promise<mssql.ISqlProjectsService> {
|
||||
const ext = vscode.extensions.getExtension(mssql.extension.name) as vscode.Extension<mssql.IExtension>;
|
||||
const api = await ext.activate();
|
||||
return api.sqlProjects;
|
||||
|
||||
// TODO: add vscode-mssql support
|
||||
}
|
||||
|
||||
export async function getVscodeMssqlApi(): Promise<vscodeMssql.IExtension> {
|
||||
const ext = vscode.extensions.getExtension(vscodeMssql.extension.name) as vscode.Extension<vscodeMssql.IExtension>;
|
||||
return ext.activate();
|
||||
|
||||
Reference in New Issue
Block a user