From 4167135b520c6bada1c8dbef55d42bb8cf7a0917 Mon Sep 17 00:00:00 2001 From: alireza_sariri Date: Tue, 17 Sep 2024 11:02:53 +0330 Subject: [PATCH 1/5] CustomExceptionHandler switch more readable and remove duplicate code --- .../Exceptions/Handler/CustomExceptionHandler.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/BuildingBlocks/BuildingBlocks/Exceptions/Handler/CustomExceptionHandler.cs b/src/BuildingBlocks/BuildingBlocks/Exceptions/Handler/CustomExceptionHandler.cs index 598d5fdd..1aaa15f7 100644 --- a/src/BuildingBlocks/BuildingBlocks/Exceptions/Handler/CustomExceptionHandler.cs +++ b/src/BuildingBlocks/BuildingBlocks/Exceptions/Handler/CustomExceptionHandler.cs @@ -23,13 +23,7 @@ public async ValueTask TryHandleAsync(HttpContext context, Exception excep exception.GetType().Name, context.Response.StatusCode = StatusCodes.Status500InternalServerError ), - ValidationException => - ( - exception.Message, - exception.GetType().Name, - context.Response.StatusCode = StatusCodes.Status400BadRequest - ), - BadRequestException => + ValidationException or BadRequestException => ( exception.Message, exception.GetType().Name, From fb806269601ffa4707d268150cc896df2197a539 Mon Sep 17 00:00:00 2001 From: alireza_sariri Date: Tue, 17 Sep 2024 11:06:23 +0330 Subject: [PATCH 2/5] reduce nesting in seed db database extentions --- .../Data/Extensions/DatabaseExtentions.cs | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/Services/Ordering/Ordering.Infrastructure/Data/Extensions/DatabaseExtentions.cs b/src/Services/Ordering/Ordering.Infrastructure/Data/Extensions/DatabaseExtentions.cs index 7bc2cc06..cdf516c4 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/Data/Extensions/DatabaseExtentions.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/Data/Extensions/DatabaseExtentions.cs @@ -14,7 +14,7 @@ public static async Task InitialiseDatabaseAsync(this WebApplication app) await SeedAsync(context); } - + private static async Task SeedAsync(ApplicationDbContext context) { await SeedCustomerAsync(context); @@ -24,28 +24,23 @@ private static async Task SeedAsync(ApplicationDbContext context) private static async Task SeedCustomerAsync(ApplicationDbContext context) { - if (!await context.Customers.AnyAsync()) - { - await context.Customers.AddRangeAsync(InitialData.Customers); - await context.SaveChangesAsync(); - } + if (await context.Customers.AnyAsync()) return; + await context.Customers.AddRangeAsync(InitialData.Customers); + await context.SaveChangesAsync(); } private static async Task SeedProductAsync(ApplicationDbContext context) { - if (!await context.Products.AnyAsync()) - { - await context.Products.AddRangeAsync(InitialData.Products); - await context.SaveChangesAsync(); - } + if (await context.Products.AnyAsync()) return; + await context.Products.AddRangeAsync(InitialData.Products); + await context.SaveChangesAsync(); } private static async Task SeedOrdersWithItemsAsync(ApplicationDbContext context) { - if (!await context.Orders.AnyAsync()) - { - await context.Orders.AddRangeAsync(InitialData.OrdersWithItems); - await context.SaveChangesAsync(); - } + if (await context.Orders.AnyAsync()) return; + await context.Orders.AddRangeAsync(InitialData.OrdersWithItems); + await context.SaveChangesAsync(); + } } From 2c0025c339fcd116f13e895987333b116f50ef58 Mon Sep 17 00:00:00 2001 From: alireza_sariri Date: Tue, 17 Sep 2024 11:09:17 +0330 Subject: [PATCH 3/5] use pattern matching for checking Entity State in AuditableEntityInterceptor --- .../Data/Interceptors/AuditableEntityInterceptor.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs b/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs index c6be6812..1eaebaf6 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs @@ -28,7 +28,8 @@ public void UpdateEntities(DbContext? context) entry.Entity.CreatedAt = DateTime.UtcNow; } - if (entry.State == EntityState.Added || entry.State == EntityState.Modified || entry.HasChangedOwnedEntities()) + if (entry is { State: EntityState.Added | EntityState.Modified } + || entry.HasChangedOwnedEntities()) { entry.Entity.LastModifiedBy = "mehmet"; entry.Entity.LastModified = DateTime.UtcNow; From 86a4d2ce7b814f3f2513ceca7a45f3b2300969e4 Mon Sep 17 00:00:00 2001 From: alireza_sariri Date: Tue, 17 Sep 2024 11:13:08 +0330 Subject: [PATCH 4/5] extract UpdateEntities function in AuditableEntityInterceptor --- .../AuditableEntityInterceptor.cs | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs b/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs index 1eaebaf6..eaea2201 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/Data/Interceptors/AuditableEntityInterceptor.cs @@ -22,18 +22,24 @@ public void UpdateEntities(DbContext? context) foreach (var entry in context.ChangeTracker.Entries()) { - if (entry.State == EntityState.Added) - { - entry.Entity.CreatedBy = "mehmet"; - entry.Entity.CreatedAt = DateTime.UtcNow; - } + HandleEntryCreation(entry); + HandleEntryModification(entry); + } + } + private void HandleEntryCreation(EntityEntry entry) + { + if (entry.State != EntityState.Added) return; - if (entry is { State: EntityState.Added | EntityState.Modified } - || entry.HasChangedOwnedEntities()) - { - entry.Entity.LastModifiedBy = "mehmet"; - entry.Entity.LastModified = DateTime.UtcNow; - } + entry.Entity.CreatedBy = "mehmet"; + entry.Entity.CreatedAt = DateTime.UtcNow; + } + private void HandleEntryModification(EntityEntry entry) + { + if (entry is { State: EntityState.Added | EntityState.Modified } + || entry.HasChangedOwnedEntities()) + { + entry.Entity.LastModifiedBy = "mehmet"; + entry.Entity.LastModified = DateTime.UtcNow; } } } From 45c9df394572535e5b54c0dc4ad4694e9fe234de Mon Sep 17 00:00:00 2001 From: alireza_sariri Date: Wed, 18 Sep 2024 10:17:34 +0330 Subject: [PATCH 5/5] use mapper for create product in catalog service --- .../Products/CreateProduct/CreateProductHandler.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/Services/Catalog/Catalog.API/Products/CreateProduct/CreateProductHandler.cs b/src/Services/Catalog/Catalog.API/Products/CreateProduct/CreateProductHandler.cs index c18bf71f..3179fde2 100644 --- a/src/Services/Catalog/Catalog.API/Products/CreateProduct/CreateProductHandler.cs +++ b/src/Services/Catalog/Catalog.API/Products/CreateProduct/CreateProductHandler.cs @@ -24,16 +24,7 @@ public async Task Handle(CreateProductCommand command, Canc //create Product entity from command object //save to database //return CreateProductResult result - - var product = new Product - { - Name = command.Name, - Category = command.Category, - Description = command.Description, - ImageFile = command.ImageFile, - Price = command.Price - }; - + var product = command.Adapt(); //save to database session.Store(product); await session.SaveChangesAsync(cancellationToken);