Files
I150/srcs/RobotNet10/Shared/RobotNet10.NavigationTune.Shared/Interfaces/ITestRepository.cs
2026-07-03 16:37:12 +07:00

78 lines
2.0 KiB
C#

using RobotNet10.NavigationTune.Shared.Models;
namespace RobotNet10.NavigationTune.Shared.Interfaces;
/// <summary>
/// Test repository interface
/// </summary>
public interface ITestRepository
{
/// <summary>
/// Get test run by ID
/// </summary>
Task<TestRun?> GetByIdAsync(Guid id);
/// <summary>
/// Get all test runs
/// </summary>
Task<List<TestRun>> GetAllAsync();
/// <summary>
/// Get total count of test runs
/// </summary>
Task<int> GetCountAsync();
/// <summary>
/// Get test runs with skip/take (for pagination)
/// </summary>
Task<List<TestRun>> GetPagedAsync(int skip, int take);
/// <summary>
/// Get test runs by scenario
/// </summary>
Task<List<TestRun>> GetByScenarioAsync(Guid scenarioId);
/// <summary>
/// Get test runs by parameter set
/// </summary>
Task<List<TestRun>> GetByParameterSetAsync(Guid parameterSetId);
/// <summary>
/// Get test runs by date range
/// </summary>
Task<List<TestRun>> GetByDateRangeAsync(DateTime from, DateTime to);
/// <summary>
/// Save test run
/// </summary>
Task<Guid> SaveAsync(TestRun testRun);
/// <summary>
/// Update test run
/// </summary>
Task UpdateAsync(TestRun testRun);
/// <summary>
/// Update test run from execution result (scalars + metrics + safety violations).
/// Uses a single scope and avoids concurrency issues when replacing navigation properties.
/// </summary>
Task UpdateFromResultAsync(
Guid testRunId,
TestStatus status,
DateTime? endTime,
double duration,
string? errorMessage,
TestMetrics? metrics,
List<SafetyViolation>? safetyViolations);
/// <summary>
/// Delete test run
/// </summary>
Task DeleteAsync(Guid id);
/// <summary>
/// Delete multiple test runs by IDs
/// </summary>
Task DeleteManyAsync(IEnumerable<Guid> ids);
}