Refactor code structure for improved readability and maintainability; optimize performance in key functions.

This commit is contained in:
master
2025-12-22 19:06:31 +02:00
parent dfaa2079aa
commit 4602ccc3a3
1444 changed files with 109919 additions and 8058 deletions

View File

@@ -0,0 +1,68 @@
using StellaOps.Findings.Ledger.WebService.Contracts;
namespace StellaOps.Findings.Ledger.WebService.Services;
public interface IFindingSummaryService
{
Task<FindingSummary?> GetSummaryAsync(Guid findingId, CancellationToken ct);
Task<FindingSummaryPage> GetSummariesAsync(FindingSummaryFilter filter, CancellationToken ct);
}
public sealed class FindingSummaryService : IFindingSummaryService
{
private readonly IFindingSummaryBuilder _builder;
private readonly IFindingRepository _repository;
public FindingSummaryService(
IFindingSummaryBuilder builder,
IFindingRepository repository)
{
_builder = builder;
_repository = repository;
}
public async Task<FindingSummary?> GetSummaryAsync(Guid findingId, CancellationToken ct)
{
var finding = await _repository.GetByIdAsync(findingId, ct);
if (finding is null)
return null;
return _builder.Build(finding);
}
public async Task<FindingSummaryPage> GetSummariesAsync(FindingSummaryFilter filter, CancellationToken ct)
{
var (findings, totalCount) = await _repository.GetPagedAsync(
page: filter.Page,
pageSize: filter.PageSize,
status: filter.Status,
severity: filter.Severity,
minConfidence: filter.MinConfidence,
ct);
var summaries = findings.Select(f => _builder.Build(f)).ToList();
return new FindingSummaryPage
{
Items = summaries,
TotalCount = totalCount,
Page = filter.Page,
PageSize = filter.PageSize
};
}
}
/// <summary>
/// Repository for finding data access.
/// </summary>
public interface IFindingRepository
{
Task<FindingData?> GetByIdAsync(Guid id, CancellationToken ct);
Task<(IReadOnlyList<FindingData> findings, int totalCount)> GetPagedAsync(
int page,
int pageSize,
string? status,
string? severity,
decimal? minConfidence,
CancellationToken ct);
}