using DigitalData.Core.Abstractions.Interfaces; using System.Linq.Expressions; namespace DigitalData.Core.Abstraction.Application.Repository; public interface IRepository { #region Create public Task CreateAsync(TEntity entity, CancellationToken cancel = default); public Task> CreateAsync(IEnumerable entities, CancellationToken cancel = default); public Task CreateAsync(TDto dto, CancellationToken cancel = default); public Task> CreateAsync(IEnumerable dtos, CancellationToken cancel = default); #endregion Create #region Read public IQueryable Where(Expression> expression); public IEnumerable GetAll(); public Task> GetAllAsync(CancellationToken cancel = default); #endregion Read #region Update public Task UpdateAsync(TDto dto, Expression> expression, CancellationToken cancel = default); public Task UpdateAsync(TDto dto, Func, IQueryable> query, CancellationToken cancel = default); #endregion Update #region Delete public Task DeleteAsync(Expression> expression, CancellationToken cancel = default); public Task DeleteAsync(Func, IQueryable> query, CancellationToken cancel = default); #endregion Delete #region Obsolete [Obsolete("Use CreateAsync, UpdateAsync or DeleteAsync")] public IQueryable Read(); [Obsolete("Use IRepository.Where")] public IQueryable ReadOnly(); #endregion } public interface IRepository { public IRepository Entity() where TEntity : IEntity; }