diff --git a/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailAccountSyncWorker.cs b/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailAccountSyncWorker.cs
deleted file mode 100644
index dc37a84..0000000
--- a/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailAccountSyncWorker.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using DigitalData.MessagingService.Application.Common.Interfaces.Repositories;
-using DigitalData.MessagingService.Application.Common.Options;
-using DigitalData.MessagingService.Domain.Entities;
-using Microsoft.Extensions.Hosting;
-using Microsoft.Extensions.Options;
-
-namespace DigitalData.MessagingService.Infrastructure.Services.Background;
-
-///
-/// A hosted background service responsible for initializing the competing email consumer pool.
-/// Leverages a push-based, event-driven RabbitMQ consumer to eliminate polling overhead.
-/// Email account configuration is resolved exclusively from application settings; no database access is performed.
-///
-public class EmailAccountSyncWorker(IRepository Repository, IOptions Options) : BackgroundService
-{
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- foreach (var account in Options.Value.Accounts)
- {
- if (account is EmailAccount emailAccount)
- await Repository.UpsertAsync(a => a.Username == emailAccount.Username, emailAccount, stoppingToken);
- }
-
- await Task.Delay(Timeout.Infinite, stoppingToken).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
- }
-}
\ No newline at end of file
diff --git a/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailSyncWorker.cs b/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailSyncWorker.cs
index be01c30..7222811 100644
--- a/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailSyncWorker.cs
+++ b/src/infrastructure/DigitalData.MessagingService.Infrastructure/Services/Background/EmailSyncWorker.cs
@@ -1,17 +1,22 @@
using DigitalData.MessagingService.Application.Common.Dto.MailSearch;
using DigitalData.MessagingService.Application.Common.Interfaces;
+using DigitalData.MessagingService.Application.Common.Interfaces.Repositories;
using DigitalData.MessagingService.Application.Common.Options;
+using DigitalData.MessagingService.Domain.Entities;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
namespace DigitalData.MessagingService.Infrastructure.Services.Background;
-public class EmailSyncWorker(IImapEmailService imapService, IOptions Options) : BackgroundService
+public class EmailSyncWorker(IImapEmailService imapService, IOptions Options, IServiceProvider Provider) : BackgroundService
{
private DateFilter? _dateFilter = null;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
+ await UpsertSeedEmailAccount(stoppingToken);
+
if (imapService is not LimilabsImapEmailService limapService)
{
await Task.Delay(Timeout.Infinite, stoppingToken).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
@@ -22,7 +27,11 @@ public class EmailSyncWorker(IImapEmailService imapService, IOptions>();
+
+ foreach (var account in await emailAccountRepo.GetAllAsync(stoppingToken))
if (account.ImapServer is not null)
{
// init or update last date filter
@@ -44,4 +53,15 @@ public class EmailSyncWorker(IImapEmailService imapService, IOptions>();
+
+ // init seed email accounts if not exist
+ foreach (var account in Options.Value.Accounts)
+ await emailAccountRepo.UpsertAsync(a => a.Username == account.Username, account, stoppingToken);
+ }
}
\ No newline at end of file