Fix B6: Market concurrency lock, watchlist exclusion from cleanup, optimized trade ID deduplication query, and TradeHistoryWorker sync logic

This commit is contained in:
Richard
2026-07-03 11:10:53 +02:00
parent 434c631290
commit 5fe7ab63ac
7 changed files with 45 additions and 20 deletions
@@ -28,21 +28,29 @@ public class MarketRepository : IMarketRepository
public async Task AddOrUpdateAsync(Market market, CancellationToken ct = default)
{
TruncateMarketStrings(market);
var existing = await _db.Markets.Include(m => m.Outcomes)
.FirstOrDefaultAsync(m => m.Platform == market.Platform && m.PlatformMarketId == market.PlatformMarketId, ct);
if (existing != null)
await _syncSemaphore.WaitAsync(ct);
try
{
UpdateMarketFields(existing, market);
}
else
{
_db.Markets.Add(market);
}
TruncateMarketStrings(market);
await _db.SaveChangesAsync(ct);
var existing = await _db.Markets.Include(m => m.Outcomes)
.FirstOrDefaultAsync(m => m.Platform == market.Platform && m.PlatformMarketId == market.PlatformMarketId, ct);
if (existing != null)
{
UpdateMarketFields(existing, market);
}
else
{
_db.Markets.Add(market);
}
await _db.SaveChangesAsync(ct);
}
finally
{
_syncSemaphore.Release();
}
}
public async Task AddOrUpdateRangeAsync(IEnumerable<Market> markets, CancellationToken ct = default)