< Summary

Information
Class: NexusLabs.Needlr.AgentFramework.Langfuse.LangfuseDatasetClient
Assembly: NexusLabs.Needlr.AgentFramework.Langfuse
File(s): /home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Langfuse/LangfuseDatasetClient.cs
Line coverage
96%
Covered lines: 25
Uncovered lines: 1
Coverable lines: 26
Total lines: 55
Line coverage: 96.1%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_IsEnabled()100%210%
EnsureDatasetAsync()100%22100%
UpsertItemAsync(...)100%11100%

File(s)

/home/runner/work/needlr/needlr/src/NexusLabs.Needlr.AgentFramework.Langfuse/LangfuseDatasetClient.cs

#LineLine coverage
 1namespace NexusLabs.Needlr.AgentFramework.Langfuse;
 2
 3/// <summary>
 4/// Default <see cref="ILangfuseDatasetClient"/> backed by the shared <see cref="LangfuseApiClient"/>.
 5/// </summary>
 6internal sealed class LangfuseDatasetClient : ILangfuseDatasetClient
 7{
 8    private readonly LangfuseApiClient _apiClient;
 9
 410    public LangfuseDatasetClient(LangfuseApiClient apiClient)
 11    {
 412        ArgumentNullException.ThrowIfNull(apiClient);
 13
 414        _apiClient = apiClient;
 415    }
 16
 17    /// <inheritdoc />
 018    public bool IsEnabled => true;
 19
 20    /// <inheritdoc />
 21    public async Task EnsureDatasetAsync(string name, string? description = null, CancellationToken cancellationToken = 
 22    {
 223        ArgumentException.ThrowIfNullOrWhiteSpace(name);
 24
 225        var existing = await _apiClient
 226            .GetOrDefaultAsync<LangfuseDatasetRef>(
 227                $"api/public/v2/datasets/{Uri.EscapeDataString(name)}",
 228                cancellationToken)
 229            .ConfigureAwait(false);
 30
 231        if (existing is not null)
 32        {
 133            return;
 34        }
 35
 136        await _apiClient
 137            .PostAsync(
 138                "api/public/v2/datasets",
 139                new LangfuseCreateDatasetRequest { Name = name, Description = description },
 140                cancellationToken)
 141            .ConfigureAwait(false);
 242    }
 43
 44    /// <inheritdoc />
 45    public Task UpsertItemAsync(LangfuseDatasetItem item, CancellationToken cancellationToken = default)
 46    {
 147        ArgumentNullException.ThrowIfNull(item);
 148        ArgumentException.ThrowIfNullOrWhiteSpace(item.DatasetName);
 49
 150        return _apiClient.PostAsync(
 151            "api/public/dataset-items",
 152            LangfuseCreateDatasetItemRequest.From(item),
 153            cancellationToken);
 54    }
 55}