csharp/Microsoft.Azure.Databricks.Client/StatementExecutionApiClient.cs (51 lines of code) (raw):

// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using Microsoft.Azure.Databricks.Client.Models; using System.Net.Http; using System.Text.Json; using System.Text.Json.Nodes; using System.Threading; using System.Threading.Tasks; namespace Microsoft.Azure.Databricks.Client { public class StatementExecutionApiClient : ApiClient, IStatementExecutionApi { private readonly string _apiBaseUrl; public StatementExecutionApiClient(HttpClient httpClient) : base(httpClient) { _apiBaseUrl = $"{ApiVersion}/sql/statements"; } public async Task Cancel(string id, CancellationToken cancellationToken = default) { await HttpPost(this.HttpClient, $"{this._apiBaseUrl}/{id}/cancel", new { }, cancellationToken).ConfigureAwait(false); } public async Task<StatementExecution> Execute(SqlStatement statement, CancellationToken cancellationToken = default) { var jsonObj = JsonSerializer.SerializeToNode(statement, Options)!.AsObject(); var execution = await HttpPost<JsonObject, JsonObject>( this.HttpClient, this._apiBaseUrl, jsonObj, cancellationToken ).ConfigureAwait(false); return execution.Deserialize<StatementExecution>(Options); } public async Task<StatementExecutionResultChunk> GetResultChunk(string id, int chunkIndex, CancellationToken cancellationToken = default) { var execution = await HttpGet<JsonObject>( this.HttpClient, $"{this._apiBaseUrl}/{id}/result/chunks/{chunkIndex}", cancellationToken ).ConfigureAwait(false); return execution.Deserialize<StatementExecutionResultChunk>(Options); } public async Task<StatementExecution> Get(string id, CancellationToken cancellationToken = default) { var execution = await HttpGet<JsonObject>( this.HttpClient, $"{this._apiBaseUrl}/{id}", cancellationToken ).ConfigureAwait(false); return execution.Deserialize<StatementExecution>(Options); } } }