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