using System.Linq.Expressions; using ApplicationHub.Domain.Contracts; using AutoMapper; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Query; namespace ApplicationHub.Data.EF.Utils; public class BaseRepository(DbSet dbSet, IMapper mapper) : IRepository where TEntity : class { public IEnumerable Find(Expression>? where = null, int? limit = null, int? offset = null, List>, OrderDirection>>? order = null) { var resolver = new QueryResolver(); var dbSetWithIncludes = Inculdes(); var result = dbSetWithIncludes == null ? resolver.Find(dbSet, where, limit, offset, order).ToList() : resolver.Find(dbSetWithIncludes, where, limit, offset, order).ToList(); return mapper.Map>(result); } protected virtual IIncludableQueryable? Inculdes() { return null; } }