diff --git a/extensions/sql-database-projects/src/dialogs/addSqlBindingQuickpick.ts b/extensions/sql-database-projects/src/dialogs/addSqlBindingQuickpick.ts index 15f7a3bc94..7d70a2206c 100644 --- a/extensions/sql-database-projects/src/dialogs/addSqlBindingQuickpick.ts +++ b/extensions/sql-database-projects/src/dialogs/addSqlBindingQuickpick.ts @@ -5,7 +5,7 @@ import * as vscode from 'vscode'; import * as path from 'path'; -import { BindingType, IConnectionInfo } from 'vscode-mssql'; +import { BindingType, ConnectionDetails, IConnectionInfo } from 'vscode-mssql'; import * as constants from '../common/constants'; import * as utils from '../common/utils'; import * as azureFunctionsUtils from '../common/azureFunctionsUtils'; @@ -169,6 +169,7 @@ export async function launchAddSqlBindingQuickpick(uri: vscode.Uri | undefined, let connectionString: string = ''; let includePassword: string | undefined; let connectionInfo: IConnectionInfo | undefined; + let connectionDetails: ConnectionDetails; if (selectedConnectionStringMethod === constants.userConnectionString) { // User chooses to enter connection string manually connectionString = await vscode.window.showInputBox( @@ -181,20 +182,12 @@ export async function launchAddSqlBindingQuickpick(uri: vscode.Uri | undefined, ) ?? ''; } else { // Let user choose from existing connections to create connection string from - let connectionUri: string = ''; connectionInfo = await vscodeMssqlApi.promptForConnection(true); if (!connectionInfo) { // User cancelled return to selectedConnectionStringMethod prompt continue; } - try { - // TO DO: https://github.com/microsoft/azuredatastudio/issues/18012 - connectionUri = await vscodeMssqlApi.connect(connectionInfo); - } catch (e) { - // display an mssql error due to connection request failing and go back to prompt for connection string methods - console.warn(e); - continue; - } + connectionDetails = { options: connectionInfo }; try { // Prompt to include password in connection string if authentication type is SqlLogin and connection has password saved if (connectionInfo.authenticationType === 'SqlLogin' && connectionInfo.password) { @@ -205,12 +198,12 @@ export async function launchAddSqlBindingQuickpick(uri: vscode.Uri | undefined, }); if (includePassword === constants.yesString) { // set connection string to include password - connectionString = await vscodeMssqlApi.getConnectionString(connectionUri, true, false); + connectionString = await vscodeMssqlApi.getConnectionString(connectionDetails, true, false); } } // set connection string to not include the password if connection info does not include password, or user chooses to not include password, or authentication type is not sql login if (includePassword !== constants.yesString) { - connectionString = await vscodeMssqlApi.getConnectionString(connectionUri, false, false); + connectionString = await vscodeMssqlApi.getConnectionString(connectionDetails, false, false); } } catch (e) { // failed to get connection string for selected connection and will go back to prompt for connection string methods diff --git a/extensions/sql-database-projects/src/test/testContext.ts b/extensions/sql-database-projects/src/test/testContext.ts index 90fadab60e..ea634c77b2 100644 --- a/extensions/sql-database-projects/src/test/testContext.ts +++ b/extensions/sql-database-projects/src/test/testContext.ts @@ -266,7 +266,7 @@ export class MockVscodeMssqlIExtension implements vscodeMssql.IExtension { getDatabaseNameFromTreeNode(_: vscodeMssql.ITreeNodeInfo): string { throw new Error('Method not implemented.'); } - getConnectionString(__: string, ___?: boolean): Promise { + getConnectionString(_: string | vscodeMssql.ConnectionDetails, ___?: boolean, _____?: boolean): Promise { throw new Error('Method not implemented.'); } } diff --git a/extensions/sql-database-projects/src/typings/vscode-mssql.d.ts b/extensions/sql-database-projects/src/typings/vscode-mssql.d.ts index 876915a282..7a5f03c460 100644 --- a/extensions/sql-database-projects/src/typings/vscode-mssql.d.ts +++ b/extensions/sql-database-projects/src/typings/vscode-mssql.d.ts @@ -77,13 +77,13 @@ declare module 'vscode-mssql' { getDatabaseNameFromTreeNode(node: ITreeNodeInfo): string; /** - * Get the connection string for the provided connection Uri - * @param connectionUri The URI of the connection to get the connection string for. - * @param includePassword Whether the Password is included in the connection string. Default is false. - * @param includeApplicationName Whether the Application Name is included in the connection string. Default is true - * @returns connection string + * Get the connection string for the provided connection Uri or connection details. + * @param connectionUriOrDetails Either the connection Uri for the connection or the connection details for the connection is required. + * @param includePassword (optional) if password should be included in connection string. + * @param includeApplicationName (optional) if application name should be included in connection string. + * @returns connection string for the connection */ - getConnectionString(connectionUri: String, includePassword?: boolean, includeApplicationName?: boolean): Promise; + getConnectionString(connectionUriOrDetails: string | ConnectionDetails, includePassword?: boolean, includeApplicationName?: boolean): Promise; } /** @@ -633,4 +633,12 @@ declare module 'vscode-mssql' { */ azureFunctions: string[]; } + + /** + * Parameters to initialize a connection to a database + */ + export interface ConnectionDetails { + + options: { [name: string]: any }; + } }