mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Mssql extension exposes OE getNode API for Sql-2019vNext extension (#3901)
* Mssql extension exposes OE getNode API for Sql-2019Vnext extension * Resolved PR comments
This commit is contained in:
65
extensions/mssql/src/api/mssqlapis.d.ts
vendored
Normal file
65
extensions/mssql/src/api/mssqlapis.d.ts
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// This is the place for extensions to expose APIs.
|
||||||
|
|
||||||
|
import * as sqlops from 'sqlops';
|
||||||
|
import * as vscode from 'vscode';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The APIs provided by Mssql extension
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface MssqlExtensionApi
|
||||||
|
*/
|
||||||
|
export interface MssqlExtensionApi {
|
||||||
|
/**
|
||||||
|
* Gets the object explorer API that supports querying over the connections supported by this extension
|
||||||
|
*
|
||||||
|
* @returns {IMssqlObjectExplorerBrowser}
|
||||||
|
* @memberof IMssqlExtensionApi
|
||||||
|
*/
|
||||||
|
getMssqlObjectExplorerBrowser(): MssqlObjectExplorerBrowser;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A browser supporting actions over the object explorer connections provided by this extension.
|
||||||
|
* Currently this is the
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface MssqlObjectExplorerBrowser
|
||||||
|
*/
|
||||||
|
export interface MssqlObjectExplorerBrowser {
|
||||||
|
/**
|
||||||
|
* Gets the matching node given a context object, e.g. one from a right-click on a node in Object Explorer
|
||||||
|
*
|
||||||
|
* @param {sqlops.ObjectExplorerContext} objectExplorerContext
|
||||||
|
* @returns {Promise<T>}
|
||||||
|
*/
|
||||||
|
getNode<T extends ITreeNode>(objectExplorerContext: sqlops.ObjectExplorerContext): Promise<T>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A tree node in the object explorer tree
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface ITreeNode
|
||||||
|
*/
|
||||||
|
export interface ITreeNode {
|
||||||
|
getNodeInfo(): sqlops.NodeInfo;
|
||||||
|
getChildren(refreshChildren: boolean): ITreeNode[] | Promise<ITreeNode[]>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A HDFS file node. This is a leaf node in the object explorer tree, and its contents
|
||||||
|
* can be queried
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface IFileNode
|
||||||
|
* @extends {ITreeNode}
|
||||||
|
*/
|
||||||
|
export interface IFileNode extends ITreeNode {
|
||||||
|
getFileContentsAsString(maxBytes?: number): Promise<string>;
|
||||||
|
}
|
||||||
@@ -24,12 +24,13 @@ import { MssqlObjectExplorerNodeProvider } from './objectExplorerNodeProvider/ob
|
|||||||
import { UploadFilesCommand, MkDirCommand, SaveFileCommand, PreviewFileCommand, CopyPathCommand, DeleteFilesCommand } from './objectExplorerNodeProvider/hdfsCommands';
|
import { UploadFilesCommand, MkDirCommand, SaveFileCommand, PreviewFileCommand, CopyPathCommand, DeleteFilesCommand } from './objectExplorerNodeProvider/hdfsCommands';
|
||||||
import { IPrompter } from './prompts/question';
|
import { IPrompter } from './prompts/question';
|
||||||
import CodeAdapter from './prompts/adapter';
|
import CodeAdapter from './prompts/adapter';
|
||||||
|
import { MssqlExtensionApi, MssqlObjectExplorerBrowser } from './api/mssqlapis';
|
||||||
|
|
||||||
const baseConfig = require('./config.json');
|
const baseConfig = require('./config.json');
|
||||||
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
const outputChannel = vscode.window.createOutputChannel(Constants.serviceName);
|
||||||
const statusView = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
const statusView = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
|
||||||
|
|
||||||
export async function activate(context: vscode.ExtensionContext) {
|
export async function activate(context: vscode.ExtensionContext): Promise<MssqlExtensionApi> {
|
||||||
// lets make sure we support this platform first
|
// lets make sure we support this platform first
|
||||||
let supported = await Utils.verifyPlatform();
|
let supported = await Utils.verifyPlatform();
|
||||||
|
|
||||||
@@ -113,6 +114,18 @@ export async function activate(context: vscode.ExtensionContext) {
|
|||||||
context.subscriptions.push(new CopyPathCommand(appContext));
|
context.subscriptions.push(new CopyPathCommand(appContext));
|
||||||
context.subscriptions.push(new DeleteFilesCommand(prompter, appContext));
|
context.subscriptions.push(new DeleteFilesCommand(prompter, appContext));
|
||||||
context.subscriptions.push({ dispose: () => languageClient.stop() });
|
context.subscriptions.push({ dispose: () => languageClient.stop() });
|
||||||
|
|
||||||
|
let api: MssqlExtensionApi = {
|
||||||
|
getMssqlObjectExplorerBrowser(): MssqlObjectExplorerBrowser {
|
||||||
|
return {
|
||||||
|
getNode: (context: sqlops.ObjectExplorerContext) => {
|
||||||
|
let oeProvider = appContext.getService<MssqlObjectExplorerNodeProvider>(Constants.ObjectExplorerService);
|
||||||
|
return <any>oeProvider.findNodeForContext(context);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return api;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateServerOptions(executablePath: string): ServerOptions {
|
function generateServerOptions(executablePath: string): ServerOptions {
|
||||||
|
|||||||
Reference in New Issue
Block a user