Vertical slice architecture:
- Move Features/Documents/{UseCase}/ to {UseCase}/Queries/
- Query + Handler in SAME file (co-located)
- Validator in separate file (single responsibility)
New structure:
- ValidatePdf/Queries/ValidatePdfQuery.cs (Query + Handler)
- ValidatePdf/Queries/ValidatePdfQueryValidator.cs
- SwissQrCode/Queries/ExtractSwissQrCodeQuery.cs (Query + Handler)
- SwissQrCode/Queries/ExtractSwissQrCodeQueryValidator.cs
AutoMapper integration:
- Add Common/Mapping/MappingProfile.cs
- Map PdfMetadata -> PdfValidationResult (domain -> DTO)
- Map SwissQrCodeData -> SwissQrCodeExtractionResult (domain -> DTO)
- Controllers now thin: pass request to MediatR, AutoMapper handles mapping
DTO improvements:
- Rename: ValidatePdfResponse -> PdfValidationResult (business-friendly)
- Rename: ExtractSwissQrCodeResponse -> SwissQrCodeExtractionResult
- Support BOTH byte[] and Base64Pdf string (XOR validation)
- Use modern C# 12 collection expressions
Code quality:
- Use PascalCase for primary constructor parameters
- Fix LoggingBehavior logging format
Deleted old structure:
- Features/Documents/ValidatePdf/ (old horizontal structure)
- Features/Documents/ExtractSwissQrCode/ (old horizontal structure)
- Common/DTOs/{Request|Response} (replaced with {Result})
Result: Vertical slices, AutoMapper v16.2.0, thin controllers
19 lines
679 B
C#
19 lines
679 B
C#
namespace DocumentOperator.Application.Common.DTOs;
|
|
|
|
/// <summary>
|
|
/// Response mit PDF-Metadaten
|
|
/// </summary>
|
|
/// <param name="PageCount">Anzahl der Seiten</param>
|
|
/// <param name="FileSizeBytes">Dateigröße in Bytes</param>
|
|
/// <param name="FileSizeMB">Dateigröße in MB (gerundet auf 2 Dezimalstellen)</param>
|
|
/// <param name="PdfVersion">PDF-Version (z.B. "1.4")</param>
|
|
/// <param name="HasAttachments">Hat das PDF Anhänge?</param>
|
|
/// <param name="AttachmentCount">Anzahl der Anhänge</param>
|
|
public record PdfValidationResult(
|
|
int PageCount,
|
|
long FileSizeBytes,
|
|
double FileSizeMB,
|
|
string PdfVersion,
|
|
bool HasAttachments,
|
|
int AttachmentCount);
|