Fix getUriForConnection API returning wrong URIs (#2202)

* 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
This commit is contained in:
Matt Irvine
2018-08-20 12:41:06 -07:00
committed by Karl Burtram
parent efa3658ced
commit 3001640eec
7 changed files with 26 additions and 21 deletions

View File

@@ -159,7 +159,8 @@ export class GetCurrentConnectionStringAction extends Action {
if (activeInput && (activeInput instanceof QueryInput || activeInput instanceof EditDataInput || activeInput instanceof DashboardInput)
&& this._connectionManagementService.isConnected(activeInput.uri)) {
let includePassword = false;
this._connectionManagementService.getConnectionString(activeInput.uri, includePassword).then(result => {
let connectionProfile = this._connectionManagementService.getConnectionProfile(activeInput.uri);
this._connectionManagementService.getConnectionString(connectionProfile.id, includePassword).then(result => {
let message = result
? result
: nls.localize('connectionAction.connectionString', "Connection string not available");

View File

@@ -263,9 +263,9 @@ export interface IConnectionManagementService {
getActiveConnectionCredentials(profileId: string): { [name: string]: string };
/**
* Get the connection string for the provided connection profile
* Get the connection string for the provided connection ID
*/
getConnectionString(ownerUri: string, includePassword: boolean): Thenable<string>;
getConnectionString(connectionId: string, includePassword: boolean): Thenable<string>;
/**
* Serialize connection string with optional provider

View File

@@ -649,9 +649,9 @@ export class ConnectionManagementService extends Disposable implements IConnecti
}
public getConnectionUriFromId(connectionId: string): string {
let connection = this.getActiveConnections().find(connection => connection.id === connectionId);
if (connection) {
return this.getConnectionUri(connection);
let connectionInfo = this._connectionStatusManager.findConnectionByProfileId(connectionId);
if (connectionInfo) {
return connectionInfo.ownerUri;
} else {
return undefined;
}
@@ -1348,9 +1348,11 @@ export class ConnectionManagementService extends Disposable implements IConnecti
}
/**
* Get the connection string for the provided connection profile
* Get the connection string for the provided connection ID
*/
public getConnectionString(ownerUri: string, includePassword: boolean = false): Thenable<string> {
public getConnectionString(connectionId: string, includePassword: boolean = false): Thenable<string> {
let ownerUri = this.getConnectionUriFromId(connectionId);
if (!ownerUri) {
return Promise.resolve(undefined);
}

View File

@@ -22,14 +22,18 @@ export class ConnectionStatusManager {
this._providerCapabilitiesMap = {};
}
public findConnection(id: string): ConnectionManagementInfo {
if (id in this._connections) {
return this._connections[id];
public findConnection(uri: string): ConnectionManagementInfo {
if (uri in this._connections) {
return this._connections[uri];
} else {
return undefined;
}
}
public findConnectionByProfileId(profileId: string): ConnectionManagementInfo {
return Object.values(this._connections).find((connection: ConnectionManagementInfo) => connection.connectionProfile.id === profileId);
}
public findConnectionProfile(connectionProfile: IConnectionProfile): ConnectionManagementInfo {
let id = Utils.generateUri(connectionProfile);
return this.findConnection(id);

View File

@@ -61,15 +61,13 @@ export class MainThreadConnectionManagement implements MainThreadConnectionManag
}
public async $listDatabases(connectionId: string): Promise<string[]> {
let connection = this._connectionManagementService.getActiveConnections().find(profile => profile.id === connectionId);
let connectionUri = this._connectionManagementService.getConnectionUri(connection);
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> {
let connection = this._connectionManagementService.getActiveConnections().find(profile => profile.id === connectionId);
return await this._connectionManagementService.getConnectionString(connectionId, includePassword);
return this._connectionManagementService.getConnectionString(connectionId, includePassword);
}
public $getUriForConnection(connectionId: string): Thenable<string> {