mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-13 17:22:15 -05:00
Fix GetConnection (#19579)
This commit is contained in:
@@ -321,8 +321,6 @@ export interface IConnectionManagementService {
|
||||
* @returns array of connections
|
||||
*/
|
||||
getConnections(activeConnectionsOnly?: boolean): ConnectionProfile[];
|
||||
|
||||
getConnection(uri: string): ConnectionProfile;
|
||||
}
|
||||
|
||||
export enum RunQueryOnConnectionMode {
|
||||
|
||||
@@ -96,7 +96,7 @@ export class MainThreadConnectionManagement extends Disposable implements MainTh
|
||||
}
|
||||
|
||||
public $getConnection(uri: string): Thenable<azdata.connection.ConnectionProfile> {
|
||||
let profile = this._connectionManagementService.getConnection(uri);
|
||||
const profile = this._connectionManagementService.getConnectionProfile(uri);
|
||||
if (!profile) {
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ import * as path from 'vs/base/common/path';
|
||||
import { HTMLReportBuilder } from 'sql/workbench/contrib/assessment/common/htmlReportGenerator';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import { INotificationService } from 'vs/platform/notification/common/notification';
|
||||
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
|
||||
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
|
||||
|
||||
export interface SqlAssessmentResultInfo {
|
||||
result: SqlAssessmentResult;
|
||||
@@ -54,6 +56,7 @@ abstract class AsmtServerAction extends Action {
|
||||
label: string,
|
||||
private asmtType: AssessmentType,
|
||||
@IConnectionManagementService private _connectionManagement: IConnectionManagementService,
|
||||
@ICapabilitiesService private _capabilitiesService: ICapabilitiesService,
|
||||
@ILogService protected _logService: ILogService,
|
||||
@IAdsTelemetryService protected _telemetryService: IAdsTelemetryService
|
||||
) {
|
||||
@@ -66,7 +69,7 @@ abstract class AsmtServerAction extends Action {
|
||||
context.component.showProgress(this.asmtType);
|
||||
let serverResults = this.getServerItems(context.ownerUri);
|
||||
let connectionUri: string = this._connectionManagement.getConnectionUriFromId(context.connectionId);
|
||||
let connection = this._connectionManagement.getConnection(connectionUri);
|
||||
let connection = this._connectionManagement.getConnectionProfile(connectionUri);
|
||||
let databaseListResult = this._connectionManagement.listDatabases(connectionUri);
|
||||
context.component.showInitialResults(await serverResults, this.asmtType);
|
||||
let dbList = await databaseListResult;
|
||||
@@ -76,7 +79,8 @@ abstract class AsmtServerAction extends Action {
|
||||
break;
|
||||
}
|
||||
let dbName = dbList.databaseNames[nDbName];
|
||||
let newUri = await this._connectionManagement.connectIfNotConnected(connection.cloneWithDatabase(dbName).clone());
|
||||
const profile = ConnectionProfile.fromIConnectionProfile(this._capabilitiesService, connection);
|
||||
let newUri = await this._connectionManagement.connectIfNotConnected(profile.cloneWithDatabase(dbName).clone());
|
||||
|
||||
this._logService.info(`Database ${dbName} assessment started`);
|
||||
let dbResult = await this.getDatabaseItems(newUri);
|
||||
@@ -101,6 +105,7 @@ export class AsmtServerSelectItemsAction extends AsmtServerAction {
|
||||
|
||||
constructor(
|
||||
@IConnectionManagementService _connectionManagement: IConnectionManagementService,
|
||||
@ICapabilitiesService _capabilitiesService: ICapabilitiesService,
|
||||
@ILogService _logService: ILogService,
|
||||
@IAssessmentService private _assessmentService: IAssessmentService,
|
||||
@IAdsTelemetryService _telemetryService: IAdsTelemetryService
|
||||
@@ -108,6 +113,7 @@ export class AsmtServerSelectItemsAction extends AsmtServerAction {
|
||||
super(AsmtServerSelectItemsAction.ID, AsmtServerSelectItemsAction.LABEL,
|
||||
AssessmentType.AvailableRules,
|
||||
_connectionManagement,
|
||||
_capabilitiesService,
|
||||
_logService, _telemetryService);
|
||||
}
|
||||
|
||||
@@ -150,11 +156,12 @@ export class AsmtServerInvokeItemsAction extends AsmtServerAction {
|
||||
|
||||
constructor(
|
||||
@IConnectionManagementService _connectionManagement: IConnectionManagementService,
|
||||
@ICapabilitiesService _capabilitiesService: ICapabilitiesService,
|
||||
@ILogService _logService: ILogService,
|
||||
@IAssessmentService private _assessmentService: IAssessmentService,
|
||||
@IAdsTelemetryService _telemetryService: IAdsTelemetryService
|
||||
) {
|
||||
super(AsmtServerInvokeItemsAction.ID, AsmtServerInvokeItemsAction.LABEL, AssessmentType.InvokeAssessment, _connectionManagement, _logService, _telemetryService);
|
||||
super(AsmtServerInvokeItemsAction.ID, AsmtServerInvokeItemsAction.LABEL, AssessmentType.InvokeAssessment, _connectionManagement, _capabilitiesService, _logService, _telemetryService);
|
||||
}
|
||||
getServerItems(ownerUri: string): Thenable<SqlAssessmentResult> {
|
||||
this._logService.info(`Requesting server items`);
|
||||
|
||||
@@ -31,6 +31,7 @@ import { TestFileService, TestEnvironmentService, TestFileDialogService } from '
|
||||
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
|
||||
/**
|
||||
* Class to test Assessment Management Actions
|
||||
*/
|
||||
@@ -120,7 +121,7 @@ suite('Assessment Actions', () => {
|
||||
let connectionManagementService = TypeMoq.Mock.ofType<IConnectionManagementService>(TestConnectionManagementService);
|
||||
connectionManagementService.setup(c => c.listDatabases(TypeMoq.It.isAny())).returns(() => Promise.resolve(dbListResult));
|
||||
connectionManagementService.setup(c => c.getConnectionUriFromId(TypeMoq.It.isAny())).returns(() => '');
|
||||
connectionManagementService.setup(c => c.getConnection(TypeMoq.It.isAny())).returns(() => connectionProfile.object);
|
||||
connectionManagementService.setup(c => c.getConnectionProfile(TypeMoq.It.isAny())).returns(() => connectionProfile.object);
|
||||
connectionManagementService.setup(c => c.connectIfNotConnected(TypeMoq.It.isAny())).returns(() => Promise.resolve(''));
|
||||
|
||||
return connectionManagementService;
|
||||
@@ -133,7 +134,12 @@ suite('Assessment Actions', () => {
|
||||
|
||||
const connectionManagementService = createConnectionManagementService(dbListResult);
|
||||
|
||||
const action = new AsmtServerSelectItemsAction(connectionManagementService.object, new NullLogService(), mockAssessmentService.object, new NullAdsTelemetryService());
|
||||
const action = new AsmtServerSelectItemsAction(
|
||||
connectionManagementService.object,
|
||||
new TestCapabilitiesService(),
|
||||
new NullLogService(),
|
||||
mockAssessmentService.object,
|
||||
new NullAdsTelemetryService());
|
||||
assert.strictEqual(action.id, AsmtServerSelectItemsAction.ID, 'Get Server Rules id action mismatch');
|
||||
assert.strictEqual(action.label, AsmtServerSelectItemsAction.LABEL, 'Get Server Rules label action mismatch');
|
||||
|
||||
@@ -156,7 +162,12 @@ suite('Assessment Actions', () => {
|
||||
|
||||
const connectionManagementService = createConnectionManagementService(dbListResult);
|
||||
|
||||
const action = new AsmtServerInvokeItemsAction(connectionManagementService.object, new NullLogService(), mockAssessmentService.object, new NullAdsTelemetryService());
|
||||
const action = new AsmtServerInvokeItemsAction(
|
||||
connectionManagementService.object,
|
||||
new TestCapabilitiesService(),
|
||||
new NullLogService(),
|
||||
mockAssessmentService.object,
|
||||
new NullAdsTelemetryService());
|
||||
assert.strictEqual(action.id, AsmtServerInvokeItemsAction.ID, 'Invoke Server Assessment id action mismatch');
|
||||
assert.strictEqual(action.label, AsmtServerInvokeItemsAction.LABEL, 'Invoke Server Assessment label action mismatch');
|
||||
|
||||
|
||||
@@ -1634,20 +1634,6 @@ export class ConnectionManagementService extends Disposable implements IConnecti
|
||||
return connections;
|
||||
}
|
||||
|
||||
public getConnection(uri: string): ConnectionProfile {
|
||||
const connections = this.getActiveConnections();
|
||||
if (connections) {
|
||||
for (let connection of connections) {
|
||||
let connectionUri = this.getConnectionUriFromId(connection.id);
|
||||
if (connectionUri === uri) {
|
||||
return connection;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
private getConnectionsInGroup(group: ConnectionProfileGroup): ConnectionProfile[] {
|
||||
const connections = [];
|
||||
if (group) {
|
||||
|
||||
@@ -781,8 +781,8 @@ suite('SQL ConnectionManagementService tests', () => {
|
||||
|
||||
await connect(uri, options, true, profile);
|
||||
// invalid uri check.
|
||||
assert.strictEqual(connectionManagementService.getConnection(badString), undefined);
|
||||
let returnedProfile = connectionManagementService.getConnection(uri);
|
||||
assert.strictEqual(connectionManagementService.getConnectionProfile(badString), undefined);
|
||||
let returnedProfile = connectionManagementService.getConnectionProfile(uri);
|
||||
assert.strictEqual(returnedProfile.groupFullName, profile.groupFullName);
|
||||
assert.strictEqual(returnedProfile.groupId, profile.groupId);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user