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