public onChooseDatabase()

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);
                });
            });
        });
    }