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