From 89ac29c1fd3cd79ca0cafe1f11b67e0eee7122e5 Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Tue, 27 May 2025 12:48:12 +0300 Subject: [PATCH] Implement UoW --- src/Printbase.Application/IUnitOfWork.cs | 15 +++++++++ src/Printbase.Infrastructure/UnitOfWork.cs | 36 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/Printbase.Application/IUnitOfWork.cs create mode 100644 src/Printbase.Infrastructure/UnitOfWork.cs diff --git a/src/Printbase.Application/IUnitOfWork.cs b/src/Printbase.Application/IUnitOfWork.cs new file mode 100644 index 0000000..5d6a236 --- /dev/null +++ b/src/Printbase.Application/IUnitOfWork.cs @@ -0,0 +1,15 @@ +using Printbase.Domain.Repositories; + +namespace Printbase.Application; + +public interface IUnitOfWork +{ + public IProductRepository ProductRepository { get; } + public ICategoryRepository CategoryRepository { get; } + public IProductVariantRepository ProductVariantRepository { get; } + + Task SaveAsync(); + Task BeginTransactionAsync(); + Task CommitTransactionAsync(); + Task RollbackTransactionAsync(); +} \ No newline at end of file diff --git a/src/Printbase.Infrastructure/UnitOfWork.cs b/src/Printbase.Infrastructure/UnitOfWork.cs new file mode 100644 index 0000000..198cd31 --- /dev/null +++ b/src/Printbase.Infrastructure/UnitOfWork.cs @@ -0,0 +1,36 @@ +using Printbase.Application; +using Printbase.Domain.Repositories; +using Printbase.Infrastructure.Database; + +namespace Printbase.Infrastructure; + +public class UnitOfWork( + ApplicationDbContext context, + IProductRepository productRepository, + IProductVariantRepository productVariantRepository, + ICategoryRepository categoryRepository) : IUnitOfWork +{ + public IProductRepository ProductRepository => productRepository; + public IProductVariantRepository ProductVariantRepository => productVariantRepository; + public ICategoryRepository CategoryRepository => categoryRepository; + + public async Task SaveAsync() + { + await context.SaveChangesAsync(); + } + + public async Task BeginTransactionAsync() + { + await context.Database.BeginTransactionAsync(); + } + + public async Task CommitTransactionAsync() + { + await context.Database.CommitTransactionAsync(); + } + + public async Task RollbackTransactionAsync() + { + await context.Database.RollbackTransactionAsync(); + } +} \ No newline at end of file