using AsbCloudDb.Model;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;

namespace AsbCloudInfrastructure.Repository
{

    public class QueryContainer<TEntity> where TEntity : class, IId
    {
        protected readonly IAsbCloudDbContext dbContext;
        protected readonly DbSet<TEntity> dbSet;
        protected readonly Func<IQueryable<TEntity>> GetQuery;

        public QueryContainer(IAsbCloudDbContext context)
        {
            dbContext = context;
            dbSet = context.Set<TEntity>();
            GetQuery = () => dbSet;
        }

        public QueryContainer(IAsbCloudDbContext context, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery)
        {
            dbContext = context;
            dbSet = context.Set<TEntity>();
            GetQuery = () => makeQuery(dbSet);
        }
    }

}