diff --git a/BimAI.Infrastructure/Sync/InvoiceSyncService.cs b/BimAI.Infrastructure/Sync/InvoiceSyncService.cs index bf7fb11..5a2baa4 100644 --- a/BimAI.Infrastructure/Sync/InvoiceSyncService.cs +++ b/BimAI.Infrastructure/Sync/InvoiceSyncService.cs @@ -33,6 +33,8 @@ public class InvoiceSyncService(HttpClient httpClient, BimAIDbContext db, IConfi var invoices = dataElement.EnumerateArray(); var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); + var processedCount = 0; + var batchSize = 20; foreach (var invoiceJson in invoices) { @@ -115,6 +117,14 @@ public class InvoiceSyncService(HttpClient httpClient, BimAIDbContext db, IConfi existing.UpdatedAt = DateTime.UtcNow; Console.WriteLine($"[SYNC] Updated invoice: {documentNo} from {source}"); } + + processedCount++; + + if (processedCount % batchSize == 0) + { + await db.SaveChangesAsync(); + Console.WriteLine($"[SYNC] Saved batch of {batchSize} invoices. Total processed: {processedCount}"); + } } catch (Exception ex) { @@ -122,6 +132,9 @@ public class InvoiceSyncService(HttpClient httpClient, BimAIDbContext db, IConfi } } + await db.SaveChangesAsync(); + Console.WriteLine($"[SYNC] Saved remaining invoices. Total processed: {processedCount}"); + syncState.LastSynced = now; if (db.SyncStates.FirstOrDefault(x => x.Entity == "Invoice") == null) { @@ -131,6 +144,7 @@ public class InvoiceSyncService(HttpClient httpClient, BimAIDbContext db, IConfi { db.SyncStates.Update(syncState); } + Console.WriteLine("Before final SaveChangesAsync"); await db.SaveChangesAsync(); Console.WriteLine("[SYNC] Invoice sync completed"); }