csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/ModelVersionApiClient.cs (58 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;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.Azure.Databricks.Client.UnityCatalog
{
public class ModelVersionApiClient : ApiClient, IModelVersionApi
{
public ModelVersionApiClient(HttpClient httpClient) : base(httpClient) { }
public async Task<(IEnumerable<ModelVersion>, string)> List(
string full_name,
int max_results = 0,
string pageToken = default,
CancellationToken cancellationToken = default)
{
var requestUriSb = new StringBuilder($"{BaseUnityCatalogUri}/models/{full_name}/versions?");
if (max_results > 0)
{
requestUriSb.Append($"&max_results={max_results}");
}
if (pageToken != null)
{
requestUriSb.Append($"&page_token={pageToken}");
}
var requestUri = requestUriSb.ToString();
var response = await HttpGet<JsonObject>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
response.TryGetPropertyValue("model_versions", out var modelVersions);
response.TryGetPropertyValue("next_page_token", out var nextPageTokenNode);
var versions = modelVersions?.Deserialize<IEnumerable<ModelVersion>>(Options) ?? Enumerable.Empty<ModelVersion>();
var nextPageToken = nextPageTokenNode?.GetValue<string>() ?? string.Empty;
return (versions, nextPageToken);
}
public global::Azure.AsyncPageable<ModelVersion> ListPageable(string full_name, int max_results = 0, CancellationToken cancellationToken = default)
{
return new AsyncPageable<ModelVersion>(async (pageToken) =>
{
var (versions, nextPageToken) = await List(full_name, max_results, pageToken, cancellationToken).ConfigureAwait(false);
return (versions.ToList(), !string.IsNullOrEmpty(nextPageToken), nextPageToken);
});
}
public async Task<ModelVersion> Get(string full_name, int version, CancellationToken cancellationToken = default)
{
var requestUriSb = new StringBuilder($"{BaseUnityCatalogUri}/models/{full_name}/versions/{version}");
var requestUri = requestUriSb.ToString();
return await HttpGet<ModelVersion>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
public async Task<ModelVersion> GetByAlias(string full_name, string alias, CancellationToken cancellationToken = default)
{
var requestUri = $"{BaseUnityCatalogUri}/models/{full_name}/aliases/{alias}";
return await HttpGet<ModelVersion>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
}
}