csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/SchemasApiClient.cs (54 lines of code) (raw):
using Microsoft.Azure.Databricks.Client.Models.UnityCatalog;
using System.Collections.Generic;
using System.Linq;
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.UnityCatalog;
public class SchemasApiClient : ApiClient, ISchemasApi
{
public SchemasApiClient(HttpClient httpClient) : base(httpClient)
{
}
public async Task<IEnumerable<Schema>> List(
string catalogName,
CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/schemas?catalog_name={catalogName}";
var schemasList = await HttpGet<JsonObject>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
schemasList.TryGetPropertyValue("schemas", out var schemas);
return schemas?.Deserialize<IEnumerable<Schema>>(Options) ?? Enumerable.Empty<Schema>();
}
public async Task<Schema> Create(
SchemaAttributes attributes,
CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/schemas";
return await HttpPost<SchemaAttributes, Schema>(this.HttpClient, requestUri, attributes, cancellationToken)
.ConfigureAwait(false);
}
public async Task<Schema> Get(string schemaFullName, CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/schemas/{schemaFullName}";
return await HttpGet<Schema>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
public async Task<Schema> Update(
string schemaFullName,
string name = default,
string owner = default,
string comment = default,
Dictionary<string, string> properties = default,
CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/schemas/{schemaFullName}";
var request = new { name, owner, comment, properties };
return await HttpPatch<dynamic, Schema>(HttpClient, requestUri, request, cancellationToken).ConfigureAwait(false);
}
public async Task Delete(string schemaFullName, CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/schemas/{schemaFullName}";
await HttpDelete(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
}