using System.Linq.Expressions; namespace LctMonolith.Database.Repositories; public interface IGenericRepository where TEntity : class { IQueryable Query( Expression>? filter = null, Func, IOrderedQueryable>? orderBy = null, params Expression>[] includes); Task GetByIdAsync(object id); ValueTask FindAsync(params object[] keyValues); Task AddAsync(TEntity entity, CancellationToken ct = default); Task AddRangeAsync(IEnumerable entities, CancellationToken ct = default); void Update(TEntity entity); void Remove(TEntity entity); Task RemoveByIdAsync(object id, CancellationToken ct = default); }