From 5ca50836a909838948ae187be21e0b6d7691d999 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 7 Jul 2026 12:23:37 +0200 Subject: [PATCH] Fix DbUpdateException in TradeRepository and Polymarket API 400 on max offset --- .../Data/Repositories/TradeRepository.cs | 15 ++++++++++++++- .../Services/CopytradingEstimator.cs | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Predictalytics.Infrastructure/Data/Repositories/TradeRepository.cs b/src/Predictalytics.Infrastructure/Data/Repositories/TradeRepository.cs index 9088ecd..8713b7e 100644 --- a/src/Predictalytics.Infrastructure/Data/Repositories/TradeRepository.cs +++ b/src/Predictalytics.Infrastructure/Data/Repositories/TradeRepository.cs @@ -69,7 +69,20 @@ public class TradeRepository : ITradeRepository { try { _db.Entry(t).State = EntityState.Detached; } catch { } } - throw; + + // Fallback to inserting one by one to avoid losing the entire batch due to a single duplicate + foreach (var t in trades) + { + try + { + _db.Trades.Add(t); + await _db.SaveChangesAsync(ct); + } + catch + { + try { _db.Entry(t).State = EntityState.Detached; } catch { } + } + } } } diff --git a/src/Predictalytics.Infrastructure/Services/CopytradingEstimator.cs b/src/Predictalytics.Infrastructure/Services/CopytradingEstimator.cs index 7e0e0e0..caa01b6 100644 --- a/src/Predictalytics.Infrastructure/Services/CopytradingEstimator.cs +++ b/src/Predictalytics.Infrastructure/Services/CopytradingEstimator.cs @@ -200,7 +200,7 @@ public class CopytradingEstimator : ICopytradingEstimator int limit = 1000; int offset = 0; - while (offset <= 3000) + while (offset <= 1000) { try { @@ -322,7 +322,7 @@ public class CopytradingEstimator : ICopytradingEstimator int limit = 1000; int offset = 0; - while (offset <= 3000) + while (offset <= 1000) { try {