perf: batch repository reads, index snapshots, centralize date encoding
- Add IEventRepository/IResultRepository.GetManyAsync to kill N+1 lookups at 6 sites (backtest, outcome eval, both bet-journal paths, anomaly browsing, results selection); guarded by a Received(1).GetManyAsync test. - Add EventRepository.QueryAsync to push date+sport filtering to SQL (was load-whole-range-then-filter); search/sort stay in-memory for Cyrillic order. - Add AnomalyRepository.CountSinceAsync (unread badge) + ListByDateRangeAsync (feed date filter); add Event/Snapshot count methods for the dashboard. - Add composite indexes IX_Snapshots_EventCode_CapturedAt and _EventCode_Source_CapturedAt via a new migration + model snapshot. - Introduce SqliteDateText as the single source of the O-format date encoding shared by Mapping (read/write) and the repositories' range predicates. - Fix LiveOddsPoller cadence drift (budget sleep against cycle time); make DetectAnomalies dedup O(1) per event; add Event.Title to dedup the title join. Tests adapted to the batched GetManyAsync via a TestFixtures bridge.
This commit is contained in:
@@ -25,6 +25,13 @@ public sealed class RunBacktestUseCaseTests
|
||||
private readonly IEventRepository _events = Substitute.For<IEventRepository>();
|
||||
private readonly IResultRepository _results = Substitute.For<IResultRepository>();
|
||||
|
||||
public RunBacktestUseCaseTests()
|
||||
{
|
||||
// Use case batches event/result loads via GetManyAsync; route through per-id stubs.
|
||||
TestFixtures.BridgeGetMany(_events);
|
||||
TestFixtures.BridgeGetMany(_results);
|
||||
}
|
||||
|
||||
private RunBacktestUseCase CreateSut() =>
|
||||
new(_anomalies, _events, _results, NullLogger<RunBacktestUseCase>.Instance);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user