refactor: Rename EmailPorifler to MessagingService
This commit is contained in:
@@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user