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); }