diff --git a/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs b/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs index 5d748bc..750df26 100644 --- a/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs +++ b/DigitalData.Core.Abstractions/Infrastructure/IRepository.cs @@ -8,9 +8,13 @@ public interface IRepository public Task> CreateAsync(IEnumerable entities, CancellationToken ct = default); + public Task CreateAsync(TDto dto, CancellationToken ct = default); + + public Task> CreateAsync(IEnumerable dtos, CancellationToken ct = default); + public Task> ReadAsync(Expression>? expression = null, CancellationToken ct = default); - public Task UpdateAsync(TUpdate update, Expression> expression, CancellationToken ct = default); + public Task UpdateAsync(TDto dto, Expression> expression, CancellationToken ct = default); public Task DeleteAsync(Expression> expression, CancellationToken ct = default); } diff --git a/DigitalData.Core.Infrastructure/DbRepository.cs b/DigitalData.Core.Infrastructure/DbRepository.cs index 67b4480..a92db59 100644 --- a/DigitalData.Core.Infrastructure/DbRepository.cs +++ b/DigitalData.Core.Infrastructure/DbRepository.cs @@ -34,18 +34,30 @@ public class DbRepository : IRepository where TDbC return entities; } + public virtual Task CreateAsync(TDto dto, CancellationToken ct = default) + { + var entity = Mapper.Map(dto); + return CreateAsync(entity, ct); + } + + public virtual Task> CreateAsync(IEnumerable dtos, CancellationToken ct = default) + { + var entities = dtos.Select(dto => Mapper.Map(dto)); + return CreateAsync(entities, ct); + } + public virtual async Task> ReadAsync(Expression>? expression = null, CancellationToken ct = default) => expression is null ? await Entities.AsNoTracking().ToListAsync(ct) : await Entities.AsNoTracking().Where(expression).ToListAsync(ct); - public virtual async Task UpdateAsync(TUpdate update, Expression> expression, CancellationToken ct = default) + public virtual async Task UpdateAsync(TDto dto, Expression> expression, CancellationToken ct = default) { var entities = await Entities.Where(expression).ToListAsync(ct); foreach (var entity in entities) { - Mapper.Map(update, entity); + Mapper.Map(dto, entity); Entities.Add(entity); }