Files
azuredatastudio/extensions/sql-bindings/src/createNewProject/addConnectionStringStep.ts
Vasu Bhog 6c7a8313b2 Adds SQL Binding Create Azure Function with SQL Binding tests (#19538)
* add a couple of azure function service tests

* address comments

* use mock for azureFunctionExtensionAPI
2022-05-31 21:04:39 -04:00

42 lines
2.2 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { AzureWizardExecuteStep, IActionContext } from '@microsoft/vscode-azext-utils';
import { IConnectionInfo } from 'vscode-mssql';
import * as azureFunctionsUtils from '../common/azureFunctionsUtils';
/**
* This execute step is used to add a connection string to the local.settings.json file when creating a new Azure Functions project
* and is needed due to vscode restarting the extension host after the user chooses to open project in new window or current window
* through the createFunction API call for vscode-azurefunctions
* @param projectFolder The folder containing the Azure Functions project
* @param connectionInfo The connection info to use when creating the connection string
* @param connectionStringSettingName the name of the connection string setting
* @returns AzureWizardExecuteStep to be used in the createFunction API call
*/
export function createAddConnectionStringStep(projectFolder: string, connectionInfo: IConnectionInfo, connectionStringSettingName?: string): AzureWizardExecuteStep<IActionContext> {
return new class AzureWizardExecuteStep {
// priority number is set to be lower than OpenFolderStep in vscode-azurefunctions
// https://github.com/microsoft/vscode-azurefunctions/blob/main/src/commands/createNewProject/OpenFolderStep.ts#L11
public priority: number = 240;
public async execute(): Promise<void> {
let settingsFile = await azureFunctionsUtils.getSettingsFile(projectFolder);
if (!settingsFile) {
return;
}
let connectionString = await azureFunctionsUtils.promptConnectionStringPasswordAndUpdateConnectionString(connectionInfo, settingsFile);
if (!connectionString) {
return;
}
void azureFunctionsUtils.addConnectionStringToConfig(connectionString, projectFolder, connectionStringSettingName);
}
public shouldExecute(): boolean {
return true;
}
};
}