// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // #nullable disable using System; using System.Threading.Tasks; using Microsoft.SqlTools.Hosting.Protocol; using Microsoft.SqlTools.ServiceLayer.AzureFunctions.Contracts; using Microsoft.SqlTools.ServiceLayer.Hosting; using Microsoft.SqlTools.ServiceLayer.Utility; namespace Microsoft.SqlTools.ServiceLayer.AzureFunctions { /// /// Main class for Azure Functions service /// class AzureFunctionsService { private static readonly Lazy instance = new Lazy(() => new AzureFunctionsService()); /// /// Gets the singleton instance object /// public static AzureFunctionsService Instance { get { return instance.Value; } } /// /// Initializes the service instance /// /// public void InitializeService(ServiceHost serviceHost) { serviceHost.SetRequestHandler(AddSqlBindingRequest.Type, this.HandleAddSqlBindingRequest, true); serviceHost.SetRequestHandler(GetAzureFunctionsRequest.Type, this.HandleGetAzureFunctionsRequest, true); } /// /// Handles request to add sql binding into Azure Functions /// public async Task HandleAddSqlBindingRequest(AddSqlBindingParams parameters, RequestContext requestContext) { AddSqlBindingOperation operation = new AddSqlBindingOperation(parameters); ResultStatus result = operation.AddBinding(); await requestContext.SendResult(result); } /// /// Handles request to get the names of the Azure functions in a file /// public async Task HandleGetAzureFunctionsRequest(GetAzureFunctionsParams parameters, RequestContext requestContext) { GetAzureFunctionsOperation operation = new GetAzureFunctionsOperation(parameters); GetAzureFunctionsResult result = operation.GetAzureFunctions(); await requestContext.SendResult(result); } } }