using System.Linq.Expressions; using ExpenseTracker.Domain.Entities; namespace ExpenseTracker.Application.Common.Interfaces.Repositories; public interface IBaseRepository where TKey : IEquatable where TEntity : EntityBase { public IQueryable Queryable { get; } Task AddOneAsync(TEntity entity, CancellationToken cancellationToken); Task> AddManyAsync(IEnumerable entities, CancellationToken cancellationToken); Task UpdateOneAsync(TEntity entity, CancellationToken cancellationToken); Task DeleteOneAsync(TKey id, CancellationToken cancellationToken); Task DeleteManyAsync(Expression> predicate, CancellationToken cancellationToken); }