using MongoDB.Driver.Linq; using MongoDB.Driver; using PoweredSoft.Data.Core; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading; using System.Threading.Tasks; namespace PoweredSoft.Data.MongoDB { public class AsyncQueryableHandlerService : IAsyncQueryableHandlerService { public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).FirstOrDefaultAsync(cancellationToken); public Task FirstOrDefaultAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).FirstOrDefaultAsync(predicate, cancellationToken); public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).ToListAsync(cancellationToken); public Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).CountAsync(); public Task LongCountAsync(IQueryable queryable, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).LongCountAsync(); public bool CanHandle(IQueryable queryable) => queryable is IMongoQueryable; public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).AnyAsync(predicate, cancellationToken); public Task AnyAsync(IQueryable queryable, CancellationToken cancellationToken = default(CancellationToken)) => ((IMongoQueryable)queryable).AnyAsync(cancellationToken); } }