refactor: Rename EmailPorifler to MessagingService

This commit is contained in:
2026-07-24 13:59:43 +02:00
parent 77d3b52d16
commit 5e587da957
58 changed files with 202 additions and 202 deletions

View File

@@ -1,8 +1,8 @@
# EmailProfiler - Implementation Guide for AI Agents
# MessagingService - Implementation Guide for AI Agents
## Overview
This guide provides step-by-step instructions for AI agents to continue the implementation of the EmailProfiler application. The project is a modern .NET 8.0 rewrite of a legacy VB.NET email automation system.
This guide provides step-by-step instructions for AI agents to continue the implementation of the MessagingService application. The project is a modern .NET 8.0 rewrite of a legacy VB.NET email automation system.
---
@@ -34,7 +34,7 @@ This guide provides step-by-step instructions for AI agents to continue the impl
## Architecture Overview
```
DigitalData.EmailProfiler/
DigitalData.MessagingService/
├── src/
│ ├── Domain/ ✅ COMPLETE
│ ├── Application/ 🚧 IN PROGRESS (5%)
@@ -56,15 +56,15 @@ DigitalData.EmailProfiler/
#### 2.1. Create Repository Interfaces
**Location**: `src/DigitalData.EmailProfiler.Application/Interfaces/Repositories/`
**Location**: `src/DigitalData.MessagingService.Application/Interfaces/Repositories/`
Create these files:
**IEmailProfileRepository.cs**:
```csharp
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.MessagingService.Domain.Entities;
namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories;
namespace DigitalData.MessagingService.Application.Interfaces.Repositories;
public interface IEmailProfileRepository
{
@@ -80,9 +80,9 @@ public interface IEmailProfileRepository
**IEmailAccountRepository.cs**:
```csharp
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.MessagingService.Domain.Entities;
namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories;
namespace DigitalData.MessagingService.Application.Interfaces.Repositories;
public interface IEmailAccountRepository
{
@@ -97,9 +97,9 @@ public interface IEmailAccountRepository
**IEmailHistoryRepository.cs**:
```csharp
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.MessagingService.Domain.Entities;
namespace DigitalData.EmailProfiler.Application.Interfaces.Repositories;
namespace DigitalData.MessagingService.Application.Interfaces.Repositories;
public interface IEmailHistoryRepository
{
@@ -116,11 +116,11 @@ public interface IEmailHistoryRepository
#### 2.2. Create Service Interfaces
**Location**: `src/DigitalData.EmailProfiler.Application/Interfaces/Services/`
**Location**: `src/DigitalData.MessagingService.Application/Interfaces/Services/`
**IEmailService.cs**:
```csharp
namespace DigitalData.EmailProfiler.Application.Interfaces.Services;
namespace DigitalData.MessagingService.Application.Interfaces.Services;
public interface IEmailService
{
@@ -169,13 +169,13 @@ public class EmailAttachmentData
#### 2.3. Create MediatR Commands
**Location**: `src/DigitalData.EmailProfiler.Application/EmailProfiles/Commands/`
**Location**: `src/DigitalData.MessagingService.Application/EmailProfiles/Commands/`
**CreateEmailProfileCommand.cs**:
```csharp
using MediatR;
namespace DigitalData.EmailProfiler.Application.EmailProfiles.Commands;
namespace DigitalData.MessagingService.Application.EmailProfiles.Commands;
public record CreateEmailProfileCommand(
string ProfileName,
@@ -213,15 +213,15 @@ public class CreateEmailProfileCommandHandler : IRequestHandler<CreateEmailProfi
#### 2.4. Create MediatR Queries
**Location**: `src/DigitalData.EmailProfiler.Application/EmailProfiles/Queries/`
**Location**: `src/DigitalData.MessagingService.Application/EmailProfiles/Queries/`
**GetEmailProfilesQuery.cs**:
```csharp
using MediatR;
using AutoMapper;
using DigitalData.EmailProfiler.Application.Common.Dtos;
using DigitalData.MessagingService.Application.Common.Dtos;
namespace DigitalData.EmailProfiler.Application.EmailProfiles.Queries;
namespace DigitalData.MessagingService.Application.EmailProfiles.Queries;
public record GetEmailProfilesQuery : IRequest<List<EmailProfileDto>>;
@@ -248,14 +248,14 @@ public class GetEmailProfilesQueryHandler : IRequestHandler<GetEmailProfilesQuer
#### 2.5. Create Validators
**Location**: `src/DigitalData.EmailProfiler.Application/EmailProfiles/Validators/`
**Location**: `src/DigitalData.MessagingService.Application/EmailProfiles/Validators/`
**CreateEmailProfileCommandValidator.cs**:
```csharp
using FluentValidation;
using DigitalData.EmailProfiler.Application.EmailProfiles.Commands;
using DigitalData.MessagingService.Application.EmailProfiles.Commands;
namespace DigitalData.EmailProfiler.Application.EmailProfiles.Validators;
namespace DigitalData.MessagingService.Application.EmailProfiles.Validators;
public class CreateEmailProfileCommandValidator : AbstractValidator<CreateEmailProfileCommand>
{
@@ -277,15 +277,15 @@ public class CreateEmailProfileCommandValidator : AbstractValidator<CreateEmailP
#### 2.6. Create AutoMapper Profiles
**Location**: `src/DigitalData.EmailProfiler.Application/Common/Mappings/`
**Location**: `src/DigitalData.MessagingService.Application/Common/Mappings/`
**MappingProfile.cs**:
```csharp
using AutoMapper;
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.EmailProfiler.Application.Common.Dtos;
using DigitalData.MessagingService.Domain.Entities;
using DigitalData.MessagingService.Application.Common.Dtos;
namespace DigitalData.EmailProfiler.Application.Common.Mappings;
namespace DigitalData.MessagingService.Application.Common.Mappings;
public class MappingProfile : Profile
{
@@ -312,14 +312,14 @@ public class MappingProfile : Profile
#### 2.7. Create DependencyInjection.cs
**Location**: `src/DigitalData.EmailProfiler.Application/DependencyInjection.cs`
**Location**: `src/DigitalData.MessagingService.Application/DependencyInjection.cs`
```csharp
using Microsoft.Extensions.DependencyInjection;
using FluentValidation;
using System.Reflection;
namespace DigitalData.EmailProfiler.Application;
namespace DigitalData.MessagingService.Application;
public static class DependencyInjection
{
@@ -348,7 +348,7 @@ public static class DependencyInjection
#### 3.1. Add NuGet Packages
```bash
cd src/DigitalData.EmailProfiler.Infrastructure
cd src/DigitalData.MessagingService.Infrastructure
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package MailKit
@@ -360,18 +360,18 @@ dotnet add package Microsoft.AspNetCore.DataProtection
#### 3.2. Create DbContext
**Location**: `src/DigitalData.EmailProfiler.Infrastructure/Persistence/EmailProfilerDbContext.cs`
**Location**: `src/DigitalData.MessagingService.Infrastructure/Persistence/MessagingServiceDbContext.cs`
```csharp
using Microsoft.EntityFrameworkCore;
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.MessagingService.Domain.Entities;
using System.Reflection;
namespace DigitalData.EmailProfiler.Infrastructure.Persistence;
namespace DigitalData.MessagingService.Infrastructure.Persistence;
public class EmailProfilerDbContext : DbContext
public class MessagingServiceDbContext : DbContext
{
public EmailProfilerDbContext(DbContextOptions<EmailProfilerDbContext> options) : base(options) { }
public MessagingServiceDbContext(DbContextOptions<MessagingServiceDbContext> options) : base(options) { }
public DbSet<EmailAccount> EmailAccounts { get; set; }
public DbSet<EmailProfile> EmailProfiles { get; set; }
@@ -420,21 +420,21 @@ public class EmailProfilerDbContext : DbContext
#### 3.3. Create Repositories
**Location**: `src/DigitalData.EmailProfiler.Infrastructure/Persistence/Repositories/`
**Location**: `src/DigitalData.MessagingService.Infrastructure/Persistence/Repositories/`
**EmailProfileRepository.cs**:
```csharp
using Microsoft.EntityFrameworkCore;
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.EmailProfiler.Application.Interfaces.Repositories;
using DigitalData.MessagingService.Domain.Entities;
using DigitalData.MessagingService.Application.Interfaces.Repositories;
namespace DigitalData.EmailProfiler.Infrastructure.Persistence.Repositories;
namespace DigitalData.MessagingService.Infrastructure.Persistence.Repositories;
public class EmailProfileRepository : IEmailProfileRepository
{
private readonly EmailProfilerDbContext _context;
private readonly MessagingServiceDbContext _context;
public EmailProfileRepository(EmailProfilerDbContext context)
public EmailProfileRepository(MessagingServiceDbContext context)
{
_context = context;
}
@@ -516,17 +516,17 @@ Create similar repositories for **EmailAccountRepository**, **EmailHistoryReposi
#### 3.5. Create DependencyInjection.cs
**Location**: `src/DigitalData.EmailProfiler.Infrastructure/DependencyInjection.cs`
**Location**: `src/DigitalData.MessagingService.Infrastructure/DependencyInjection.cs`
```csharp
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.EntityFrameworkCore;
using DigitalData.EmailProfiler.Infrastructure.Persistence;
using DigitalData.EmailProfiler.Application.Interfaces.Repositories;
using DigitalData.EmailProfiler.Infrastructure.Persistence.Repositories;
using DigitalData.MessagingService.Infrastructure.Persistence;
using DigitalData.MessagingService.Application.Interfaces.Repositories;
using DigitalData.MessagingService.Infrastructure.Persistence.Repositories;
namespace DigitalData.EmailProfiler.Infrastructure;
namespace DigitalData.MessagingService.Infrastructure;
public static class DependencyInjection
{
@@ -535,7 +535,7 @@ public static class DependencyInjection
IConfiguration configuration)
{
// DbContext
services.AddDbContext<EmailProfilerDbContext>(options =>
services.AddDbContext<MessagingServiceDbContext>(options =>
options.UseSqlServer(
configuration.GetConnectionString("DefaultConnection"),
sqlOptions =>
@@ -572,7 +572,7 @@ public static class DependencyInjection
#### 4.1. Add NuGet Packages
```bash
cd src/DigitalData.EmailProfiler.API
cd src/DigitalData.MessagingService.API
dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Sinks.File
dotnet add package Serilog.Sinks.MSSqlServer
@@ -581,12 +581,12 @@ dotnet add package Scalar.AspNetCore
#### 4.2. Update Program.cs
**Location**: `src/DigitalData.EmailProfiler.API/Program.cs`
**Location**: `src/DigitalData.MessagingService.API/Program.cs`
```csharp
using DigitalData.EmailProfiler.API;
using DigitalData.EmailProfiler.Application;
using DigitalData.EmailProfiler.Infrastructure;
using DigitalData.MessagingService.API;
using DigitalData.MessagingService.Application;
using DigitalData.MessagingService.Infrastructure;
using Serilog;
using Scalar.AspNetCore;
@@ -639,7 +639,7 @@ app.MapControllers();
try
{
Log.Information("Starting EmailProfiler API");
Log.Information("Starting MessagingService API");
app.Run();
}
catch (Exception ex)
@@ -654,16 +654,16 @@ finally
#### 4.3. Create Controllers
**Location**: `src/DigitalData.EmailProfiler.API/Controllers/`
**Location**: `src/DigitalData.MessagingService.API/Controllers/`
**EmailProfilesController.cs**:
```csharp
using Microsoft.AspNetCore.Mvc;
using MediatR;
using DigitalData.EmailProfiler.Application.EmailProfiles.Commands;
using DigitalData.EmailProfiler.Application.EmailProfiles.Queries;
using DigitalData.MessagingService.Application.EmailProfiles.Commands;
using DigitalData.MessagingService.Application.EmailProfiles.Queries;
namespace DigitalData.EmailProfiler.API.Controllers;
namespace DigitalData.MessagingService.API.Controllers;
[ApiController]
[Route("api/[controller]")]
@@ -713,13 +713,13 @@ Create similar controllers for **EmailAccountsController**, **EmailHistoryContro
#### 4.4. Create Background Workers
**Location**: `src/DigitalData.EmailProfiler.API/Workers/`
**Location**: `src/DigitalData.MessagingService.API/Workers/`
**EmailPollingWorker.cs** and **EmailSenderWorker.cs** (See agents.md for implementation examples)
#### 4.5. Update appsettings.json
**Location**: `src/DigitalData.EmailProfiler.API/appsettings.json`
**Location**: `src/DigitalData.MessagingService.API/appsettings.json`
```json
{
@@ -758,7 +758,7 @@ Create similar controllers for **EmailAccountsController**, **EmailHistoryContro
#### 5.1. Add NuGet Packages
```bash
cd tests/DigitalData.EmailProfiler.Tests
cd tests/DigitalData.MessagingService.Tests
dotnet add package FakeItEasy
dotnet add package Bogus
dotnet add package FluentAssertions
@@ -768,15 +768,15 @@ dotnet add package Testcontainers.MsSql
#### 5.2. Create Unit Tests
**Location**: `tests/DigitalData.EmailProfiler.Tests/Unit/Domain/`
**Location**: `tests/DigitalData.MessagingService.Tests/Unit/Domain/`
**MessageIdGeneratorTests.cs**:
```csharp
using Xunit;
using FluentAssertions;
using DigitalData.EmailProfiler.Domain.Services;
using DigitalData.MessagingService.Domain.Services;
namespace DigitalData.EmailProfiler.Tests.Unit.Domain;
namespace DigitalData.MessagingService.Tests.Unit.Domain;
public class MessageIdGeneratorTests
{
@@ -844,7 +844,7 @@ The README should include (in German):
**Template structure**:
```markdown
# DigitalData EmailProfiler
# DigitalData MessagingService
## Übersicht
[Application overview in German]
@@ -912,15 +912,15 @@ dotnet build
dotnet test
# Run API
cd src/DigitalData.EmailProfiler.API
cd src/DigitalData.MessagingService.API
dotnet run
# Create migration
cd src/DigitalData.EmailProfiler.Infrastructure
dotnet ef migrations add InitialCreate --startup-project ../DigitalData.EmailProfiler.API
cd src/DigitalData.MessagingService.Infrastructure
dotnet ef migrations add InitialCreate --startup-project ../DigitalData.MessagingService.API
# Update database
dotnet ef database update --startup-project ../DigitalData.EmailProfiler.API
dotnet ef database update --startup-project ../DigitalData.MessagingService.API
```
---