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 {