in src/controllers/connectionManager.ts [391:438]
public onChooseDatabase(): Promise<boolean> {
const self = this;
const fileUri = this.vscodeWrapper.activeTextEditorUri;
return new Promise<boolean>( (resolve, reject) => {
if (!self.isConnected(fileUri)) {
self.vscodeWrapper.showWarningMessage(LocalizedConstants.msgChooseDatabaseNotConnected);
resolve(false);
return;
}
// Get list of databases on current server
let listParams = new ConnectionContracts.ListDatabasesParams();
listParams.ownerUri = fileUri;
self.client.sendRequest(ConnectionContracts.ListDatabasesRequest.type, listParams).then((result: any) => {
// Then let the user select a new database to connect to
self.connectionUI.showDatabasesOnCurrentServer(self._connections[fileUri].credentials, result.databaseNames).then( newDatabaseCredentials => {
if (newDatabaseCredentials) {
self.vscodeWrapper.logToOutputChannel(
Utils.formatString(LocalizedConstants.msgChangingDatabase, newDatabaseCredentials.dbname, newDatabaseCredentials.host, fileUri)
);
self.disconnect(fileUri).then( () => {
self.connect(fileUri, newDatabaseCredentials).then( () => {
Telemetry.sendTelemetryEvent('UseDatabase');
self.vscodeWrapper.logToOutputChannel(
Utils.formatString(
LocalizedConstants.msgChangedDatabase,
newDatabaseCredentials.dbname,
newDatabaseCredentials.host, fileUri)
);
resolve(true);
}).catch(err => {
reject(err);
});
}).catch(err => {
reject(err);
});
} else {
resolve(false);
}
}).catch(err => {
reject(err);
});
});
});
}