mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 17:22:20 -05:00
* Fix connection URI api to return working URI * run tsfmt * Keep using hand-built connection string for now in import * Use connection ID instead of URI to get connection string
90 lines
4.2 KiB
TypeScript
90 lines
4.2 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
|
|
import { SqlExtHostContext, SqlMainContext, ExtHostConnectionManagementShape, MainThreadConnectionManagementShape } from 'sql/workbench/api/node/sqlExtHost.protocol';
|
|
import * as sqlops from 'sqlops';
|
|
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
|
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
|
import { IConnectionManagementService, IConnectionDialogService } from 'sql/parts/connection/common/connectionManagement';
|
|
import { IObjectExplorerService } from 'sql/parts/objectExplorer/common/objectExplorerService';
|
|
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
|
|
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
|
|
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
|
|
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
|
|
|
|
@extHostNamedCustomer(SqlMainContext.MainThreadConnectionManagement)
|
|
export class MainThreadConnectionManagement implements MainThreadConnectionManagementShape {
|
|
|
|
private _proxy: ExtHostConnectionManagementShape;
|
|
private _toDispose: IDisposable[];
|
|
|
|
constructor(
|
|
extHostContext: IExtHostContext,
|
|
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService,
|
|
@IObjectExplorerService private _objectExplorerService: IObjectExplorerService,
|
|
@IWorkbenchEditorService private _workbenchEditorService: IWorkbenchEditorService,
|
|
@IConnectionDialogService private _connectionDialogService: IConnectionDialogService,
|
|
) {
|
|
if (extHostContext) {
|
|
this._proxy = extHostContext.getProxy(SqlExtHostContext.ExtHostConnectionManagement);
|
|
}
|
|
this._toDispose = [];
|
|
}
|
|
|
|
public dispose(): void {
|
|
this._toDispose = dispose(this._toDispose);
|
|
}
|
|
|
|
public $getActiveConnections(): Thenable<sqlops.connection.Connection[]> {
|
|
return Promise.resolve(this._connectionManagementService.getActiveConnections().map(profile => this.convertConnection(profile)));
|
|
}
|
|
|
|
public $getCurrentConnection(): Thenable<sqlops.connection.Connection> {
|
|
return Promise.resolve(this.convertConnection(TaskUtilities.getCurrentGlobalConnection(this._objectExplorerService, this._connectionManagementService, this._workbenchEditorService, true)));
|
|
}
|
|
|
|
public $getCredentials(connectionId: string): Thenable<{ [name: string]: string }> {
|
|
return Promise.resolve(this._connectionManagementService.getActiveConnectionCredentials(connectionId));
|
|
}
|
|
|
|
|
|
public async $openConnectionDialog(providers: string[]): Promise<sqlops.connection.Connection> {
|
|
let connectionProfile = await this._connectionDialogService.openDialogAndWait(this._connectionManagementService, { connectionType: 1, providers: providers });
|
|
return connectionProfile ? {
|
|
connectionId: connectionProfile.id,
|
|
options: connectionProfile.options,
|
|
providerName: connectionProfile.providerName
|
|
} : undefined;
|
|
}
|
|
|
|
public async $listDatabases(connectionId: string): Promise<string[]> {
|
|
let connectionUri = await this.$getUriForConnection(connectionId);
|
|
let result = await this._connectionManagementService.listDatabases(connectionUri);
|
|
return result.databaseNames;
|
|
}
|
|
|
|
public async $getConnectionString(connectionId: string, includePassword: boolean): Promise<string> {
|
|
return this._connectionManagementService.getConnectionString(connectionId, includePassword);
|
|
}
|
|
|
|
public $getUriForConnection(connectionId: string): Thenable<string> {
|
|
return Promise.resolve(this._connectionManagementService.getConnectionUriFromId(connectionId));
|
|
}
|
|
|
|
private convertConnection(profile: IConnectionProfile): sqlops.connection.Connection {
|
|
if (!profile) {
|
|
return undefined;
|
|
}
|
|
profile = this._connectionManagementService.removeConnectionProfileCredentials(profile);
|
|
let connection: sqlops.connection.Connection = {
|
|
providerName: profile.providerName,
|
|
connectionId: profile.id,
|
|
options: profile.options
|
|
};
|
|
return connection;
|
|
}
|
|
}
|