From 166acea8b13559b92d074147ce97ba6a4d2fd3ec Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 19 Jan 2026 16:36:08 +0100 Subject: [PATCH] Introduce generic IRepository and refactor repositories Added a generic IRepository interface for common CRUD operations and updated ICatalogRepository to inherit from it, removing redundant methods. Updated CatalogRepository to implement the new interface. Cleaned up DbFirst.Domain.csproj by removing an unused folder reference. These changes improve code reuse and align with clean architecture practices. --- DbFirst.Domain/DbFirst.Domain.csproj | 4 ---- DbFirst.Domain/Repositories/ICatalogRepository.cs | 6 +----- DbFirst.Domain/Repositories/IRepository.cs | 10 ++++++++++ .../Repositories/CatalogRepository.cs | 5 +++++ 4 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 DbFirst.Domain/Repositories/IRepository.cs diff --git a/DbFirst.Domain/DbFirst.Domain.csproj b/DbFirst.Domain/DbFirst.Domain.csproj index bbf0ab3..fa71b7a 100644 --- a/DbFirst.Domain/DbFirst.Domain.csproj +++ b/DbFirst.Domain/DbFirst.Domain.csproj @@ -6,8 +6,4 @@ enable - - - - diff --git a/DbFirst.Domain/Repositories/ICatalogRepository.cs b/DbFirst.Domain/Repositories/ICatalogRepository.cs index 815bfda..2534739 100644 --- a/DbFirst.Domain/Repositories/ICatalogRepository.cs +++ b/DbFirst.Domain/Repositories/ICatalogRepository.cs @@ -34,12 +34,8 @@ A generic Repository isn’t really worthwhile here: * See: https://github.com/jasontaylordev/CleanArchitecture/blob/main/src/Infrastructure/Identity/IdentityService.cs */ -public interface ICatalogRepository +public interface ICatalogRepository : IRepository { - Task> GetAllAsync(CancellationToken cancellationToken = default); - Task GetByIdAsync(int id, CancellationToken cancellationToken = default); Task GetByTitleAsync(string title, CancellationToken cancellationToken = default); - Task InsertAsync(VwmyCatalog catalog, CancellationToken cancellationToken = default); Task UpdateAsync(int id, VwmyCatalog catalog, CatalogUpdateProcedure procedure, CancellationToken cancellationToken = default); - Task DeleteAsync(int id, CancellationToken cancellationToken = default); } diff --git a/DbFirst.Domain/Repositories/IRepository.cs b/DbFirst.Domain/Repositories/IRepository.cs new file mode 100644 index 0000000..0064910 --- /dev/null +++ b/DbFirst.Domain/Repositories/IRepository.cs @@ -0,0 +1,10 @@ +namespace DbFirst.Domain.Repositories; + +public interface IRepository +{ + Task> GetAllAsync(CancellationToken cancellationToken = default); + Task GetByIdAsync(int id, CancellationToken cancellationToken = default); + Task InsertAsync(T entity, CancellationToken cancellationToken = default); + Task UpdateAsync(int id, T entity, CancellationToken cancellationToken = default); + Task DeleteAsync(int id, CancellationToken cancellationToken = default); +} diff --git a/DbFirst.Infrastructure/Repositories/CatalogRepository.cs b/DbFirst.Infrastructure/Repositories/CatalogRepository.cs index 54478d9..d15e5ff 100644 --- a/DbFirst.Infrastructure/Repositories/CatalogRepository.cs +++ b/DbFirst.Infrastructure/Repositories/CatalogRepository.cs @@ -107,6 +107,11 @@ public class CatalogRepository : ICatalogRepository return await _db.VwmyCatalogs.AsNoTracking().FirstOrDefaultAsync(x => x.Guid == guid, cancellationToken); } + public async Task UpdateAsync(int id, VwmyCatalog catalog, CancellationToken cancellationToken = default) + { + return await UpdateAsync(id, catalog, CatalogUpdateProcedure.Update, cancellationToken); + } + public async Task DeleteAsync(int id, CancellationToken cancellationToken = default) { var exists = await _db.VwmyCatalogs.AsNoTracking().AnyAsync(x => x.Guid == id, cancellationToken);