Initial commit

This commit is contained in:
2026-07-03 16:31:37 +07:00
commit 899c7c637d
1939 changed files with 641750 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
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);
}