mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Machine Learning Services Extension - External Languages (#9043)
* Added external language list, edit and delete UIs to Machine Learning extension
This commit is contained in:
@@ -36,6 +36,7 @@ export const ObjectExplorerService = 'objectexplorer';
|
||||
export const CmsService = 'cmsService';
|
||||
export const DacFxService = 'dacfxService';
|
||||
export const SchemaCompareService = 'schemaCompareService';
|
||||
export const LanguageExtensionService = 'languageExtensionService';
|
||||
export const objectExplorerPrefix: string = 'objectexplorer://';
|
||||
export const ViewType = 'view';
|
||||
|
||||
|
||||
@@ -536,6 +536,40 @@ export namespace RemoveServerGroupRequest {
|
||||
}
|
||||
// ------------------------------- <CMS> ----------------------------------------
|
||||
|
||||
// ------------------------------- <Language Extensibility> -----------------------------
|
||||
|
||||
export interface LanguageExtensionRequestParam {
|
||||
ownerUri: string;
|
||||
}
|
||||
|
||||
export interface ExternalLanguageRequestParam extends LanguageExtensionRequestParam {
|
||||
languageName: string;
|
||||
}
|
||||
|
||||
export interface ExternalLanguageUpdateRequestParam extends LanguageExtensionRequestParam {
|
||||
language: mssql.ExternalLanguage;
|
||||
}
|
||||
|
||||
export interface LanguageExtensionListResponseParam {
|
||||
languages: mssql.ExternalLanguage[];
|
||||
}
|
||||
|
||||
|
||||
export interface ExternalLanguageResponseParam {
|
||||
}
|
||||
|
||||
export namespace LanguageExtensibilityListRequest {
|
||||
export const type = new RequestType<LanguageExtensionRequestParam, LanguageExtensionListResponseParam, void, void>('languageExtension/list');
|
||||
}
|
||||
|
||||
export namespace LanguageExtensibilityDeleteRequest {
|
||||
export const type = new RequestType<ExternalLanguageRequestParam, ExternalLanguageResponseParam, void, void>('languageExtension/delete');
|
||||
}
|
||||
|
||||
export namespace LanguageExtensibilityUpdateRequest {
|
||||
export const type = new RequestType<ExternalLanguageUpdateRequestParam, ExternalLanguageResponseParam, void, void>('languageExtension/update');
|
||||
}
|
||||
|
||||
// ------------------------------- <Schema Compare> -----------------------------
|
||||
export interface SchemaCompareParams {
|
||||
operationId: string;
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { AppContext } from '../appContext';
|
||||
import { SqlOpsDataClient, ISqlOpsFeature } from 'dataprotocol-client';
|
||||
import * as constants from '../constants';
|
||||
import * as mssql from '../mssql';
|
||||
import * as Utils from '../utils';
|
||||
import { ClientCapabilities } from 'vscode-languageclient';
|
||||
import * as contracts from '../contracts';
|
||||
|
||||
export class LanguageExtensionService implements mssql.ILanguageExtensionService {
|
||||
|
||||
public static asFeature(context: AppContext): ISqlOpsFeature {
|
||||
return class extends LanguageExtensionService {
|
||||
constructor(client: SqlOpsDataClient) {
|
||||
super(context, client);
|
||||
}
|
||||
|
||||
fillClientCapabilities(capabilities: ClientCapabilities): void {
|
||||
Utils.ensure(capabilities, 'languageExtension')!.languageExtension = true;
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) {
|
||||
context.registerService(constants.LanguageExtensionService, this);
|
||||
}
|
||||
|
||||
public listLanguages(ownerUri: string): Thenable<mssql.ExternalLanguage[]> {
|
||||
const params: contracts.LanguageExtensionRequestParam = { ownerUri: ownerUri };
|
||||
return this.client.sendRequest(contracts.LanguageExtensibilityListRequest.type, params).then(
|
||||
r => {
|
||||
return r.languages;
|
||||
},
|
||||
e => {
|
||||
this.client.logFailedRequest(contracts.LanguageExtensibilityListRequest.type, e);
|
||||
return Promise.reject(e);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public updateLanguage(ownerUri: string, language: mssql.ExternalLanguage): Thenable<void> {
|
||||
const params: contracts.ExternalLanguageUpdateRequestParam = { ownerUri: ownerUri, language: language };
|
||||
return this.client.sendRequest(contracts.LanguageExtensibilityUpdateRequest.type, params).then(
|
||||
() => {
|
||||
},
|
||||
e => {
|
||||
this.client.logFailedRequest(contracts.LanguageExtensibilityUpdateRequest.type, e);
|
||||
return Promise.reject(e);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public deleteLanguage(ownerUri: string, languageName: string): Thenable<void> {
|
||||
const params: contracts.ExternalLanguageRequestParam = { ownerUri: ownerUri, languageName: languageName };
|
||||
return this.client.sendRequest(contracts.LanguageExtensibilityDeleteRequest.type, params).then(
|
||||
() => {
|
||||
},
|
||||
e => {
|
||||
this.client.logFailedRequest(contracts.LanguageExtensibilityDeleteRequest.type, e);
|
||||
return Promise.reject(e);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
26
extensions/mssql/src/mssql.d.ts
vendored
26
extensions/mssql/src/mssql.d.ts
vendored
@@ -38,6 +38,8 @@ export interface IExtension {
|
||||
|
||||
readonly schemaCompare: ISchemaCompareService;
|
||||
|
||||
readonly languageExtension: ILanguageExtensionService;
|
||||
|
||||
readonly dacFx: IDacFxService;
|
||||
}
|
||||
|
||||
@@ -379,6 +381,30 @@ export interface GenerateDeployPlan {
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region --- Language Extensibility
|
||||
export interface ExternalLanguageContent {
|
||||
pathToExtension: string;
|
||||
extensionFileName: string;
|
||||
platform?: string;
|
||||
parameters?: string;
|
||||
environmentVariables?: string;
|
||||
isLocalFile: boolean;
|
||||
}
|
||||
|
||||
export interface ExternalLanguage {
|
||||
name: string;
|
||||
owner?: string;
|
||||
contents: ExternalLanguageContent[];
|
||||
createdDate?: string;
|
||||
}
|
||||
|
||||
export interface ILanguageExtensionService {
|
||||
listLanguages(ownerUri: string): Thenable<ExternalLanguage[]>;
|
||||
deleteLanguage(ownerUri: string, languageName: string): Thenable<void>;
|
||||
updateLanguage(ownerUri: string, language: ExternalLanguage): Thenable<void>;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//#region --- cms
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { AppContext } from './appContext';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser } from './mssql';
|
||||
import { IExtension, ICmsService, IDacFxService, ISchemaCompareService, MssqlObjectExplorerBrowser, ILanguageExtensionService } from './mssql';
|
||||
import * as constants from './constants';
|
||||
import { MssqlObjectExplorerNodeProvider } from './objectExplorerNodeProvider/objectExplorerNodeProvider';
|
||||
import * as azdata from 'azdata';
|
||||
@@ -20,6 +20,9 @@ export function createMssqlApi(context: AppContext): IExtension {
|
||||
get schemaCompare() {
|
||||
return context.getService<ISchemaCompareService>(constants.SchemaCompareService);
|
||||
},
|
||||
get languageExtension() {
|
||||
return context.getService<ILanguageExtensionService>(constants.LanguageExtensionService);
|
||||
},
|
||||
getMssqlObjectExplorerBrowser(): MssqlObjectExplorerBrowser {
|
||||
return {
|
||||
getNode: (explorerContext: azdata.ObjectExplorerContext) => {
|
||||
|
||||
@@ -21,6 +21,7 @@ import { CmsService } from './cms/cmsService';
|
||||
import { CompletionExtensionParams, CompletionExtLoadRequest } from './contracts';
|
||||
import { promises as fs } from 'fs';
|
||||
import * as nls from 'vscode-nls';
|
||||
import { LanguageExtensionService } from './languageExtension/languageExtensionService';
|
||||
|
||||
const localize = nls.loadMessageBundle();
|
||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||
@@ -152,6 +153,7 @@ function getClientOptions(context: AppContext): ClientOptions {
|
||||
AgentServicesFeature,
|
||||
SerializationFeature,
|
||||
SchemaCompareService.asFeature(context),
|
||||
LanguageExtensionService.asFeature(context),
|
||||
DacFxService.asFeature(context),
|
||||
CmsService.asFeature(context)
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user