csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/CatalogsApiClient.cs (51 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 CatalogsApiClient : ApiClient, ICatalogsApi { public CatalogsApiClient(HttpClient httpClient) : base(httpClient) { } public async Task<IEnumerable<Catalog>> List(CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/catalogs"; var catalogsList = await HttpGet<JsonObject>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false); catalogsList.TryGetPropertyValue("catalogs", out var catalogs); return catalogs?.Deserialize<IEnumerable<Catalog>>(Options) ?? Enumerable.Empty<Catalog>(); } public async Task<Catalog> Create(CatalogAttributes catalog, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/catalogs"; return await HttpPost<CatalogAttributes, Catalog>(this.HttpClient, requestUri, catalog, cancellationToken) .ConfigureAwait(false); } public async Task<Catalog> Get(string catalogName, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/catalogs/{catalogName}"; return await HttpGet<Catalog>(this.HttpClient, requestUri, cancellationToken).ConfigureAwait(false); } public async Task<Catalog> Update( string catalogName, string name = default, string owner = default, string comment = default, Dictionary<string, string> properties = default, IsolationMode? isolationMode = IsolationMode.OPEN, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/catalogs/{catalogName}"; var request = new { name, owner, comment, isolation_mode = isolationMode, properties }; return await HttpPatch<dynamic, Catalog>(HttpClient, requestUri, request, cancellationToken).ConfigureAwait(false); } public async Task Delete(string catalogName, bool forceDeletion = false, CancellationToken cancellationToken = default) { var requestUri = $"{BaseUnityCatalogUri}/catalogs/{catalogName}?force={forceDeletion.ToString().ToLower()}"; await HttpDelete(HttpClient, requestUri, cancellationToken).ConfigureAwait(false); } }