mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -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 ObjectExplorerService = 'objectexplorer';
|
||||||
export const CmsService = 'cmsService';
|
export const CmsService = 'cmsService';
|
||||||
export const DacFxService = 'dacfxService';
|
export const DacFxService = 'dacfxService';
|
||||||
|
export const SqlProjectsService = 'sqlProjectsService';
|
||||||
export const SchemaCompareService = 'schemaCompareService';
|
export const SchemaCompareService = 'schemaCompareService';
|
||||||
export const LanguageExtensionService = 'languageExtensionService';
|
export const LanguageExtensionService = 'languageExtensionService';
|
||||||
export const objectExplorerPrefix: string = 'objectexplorer://';
|
export const objectExplorerPrefix: string = 'objectexplorer://';
|
||||||
|
|||||||
@@ -601,6 +601,22 @@ export namespace SavePublishProfileRequest {
|
|||||||
|
|
||||||
// ------------------------------- </ DacFx > ------------------------------------
|
// ------------------------------- </ 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> ----------------------------------------
|
// ------------------------------- <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 dacFx: IDacFxService;
|
||||||
|
|
||||||
|
readonly sqlProjects: ISqlProjectsService;
|
||||||
|
|
||||||
readonly sqlAssessment: ISqlAssessmentService;
|
readonly sqlAssessment: ISqlAssessmentService;
|
||||||
|
|
||||||
readonly sqlMigration: ISqlMigrationService;
|
readonly sqlMigration: ISqlMigrationService;
|
||||||
@@ -314,6 +316,19 @@ declare module 'mssql' {
|
|||||||
|
|
||||||
//#endregion
|
//#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
|
//#region --- Language Extensibility
|
||||||
export interface ExternalLanguageContent {
|
export interface ExternalLanguageContent {
|
||||||
pathToExtension: string;
|
pathToExtension: string;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { AppContext } from './appContext';
|
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 * as constants from './constants';
|
||||||
import { SqlToolsServer } from './sqlToolsServer';
|
import { SqlToolsServer } from './sqlToolsServer';
|
||||||
|
|
||||||
@@ -19,6 +19,9 @@ export function createMssqlApi(context: AppContext, sqlToolsServer: SqlToolsServ
|
|||||||
get dacFx() {
|
get dacFx() {
|
||||||
return context.getService<IDacFxService>(constants.DacFxService);
|
return context.getService<IDacFxService>(constants.DacFxService);
|
||||||
},
|
},
|
||||||
|
get sqlProjects() {
|
||||||
|
return context.getService<ISqlProjectsService>(constants.SqlProjectsService);
|
||||||
|
},
|
||||||
get schemaCompare() {
|
get schemaCompare() {
|
||||||
return context.getService<ISchemaCompareService>(constants.SchemaCompareService);
|
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 { AzureBlobService } from './azureBlob/azureBlobService';
|
||||||
import { ErrorDiagnosticsProvider } from './errorDiagnostics/errorDiagnosticsProvider';
|
import { ErrorDiagnosticsProvider } from './errorDiagnostics/errorDiagnosticsProvider';
|
||||||
import { TdeMigrationService } from './tdeMigration/tdeMigrationService';
|
import { TdeMigrationService } from './tdeMigration/tdeMigrationService';
|
||||||
|
import { SqlProjectsService } from './sqlProjects/sqlProjectsService';
|
||||||
|
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||||
@@ -188,6 +189,7 @@ function getClientOptions(context: AppContext): ClientOptions {
|
|||||||
SchemaCompareService.asFeature(context),
|
SchemaCompareService.asFeature(context),
|
||||||
LanguageExtensionService.asFeature(context),
|
LanguageExtensionService.asFeature(context),
|
||||||
DacFxService.asFeature(context),
|
DacFxService.asFeature(context),
|
||||||
|
SqlProjectsService.asFeature(context),
|
||||||
CmsService.asFeature(context),
|
CmsService.asFeature(context),
|
||||||
SqlAssessmentService.asFeature(context),
|
SqlAssessmentService.asFeature(context),
|
||||||
NotebookConvertService.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> {
|
export async function getVscodeMssqlApi(): Promise<vscodeMssql.IExtension> {
|
||||||
const ext = vscode.extensions.getExtension(vscodeMssql.extension.name) as vscode.Extension<vscodeMssql.IExtension>;
|
const ext = vscode.extensions.getExtension(vscodeMssql.extension.name) as vscode.Extension<vscodeMssql.IExtension>;
|
||||||
return ext.activate();
|
return ext.activate();
|
||||||
|
|||||||
Reference in New Issue
Block a user