using PoweredSoft.Data.Core;
using System.Linq.Expressions;
namespace Svrnty.Sample;
///
/// Simple in-memory implementation of IAsyncQueryableService for testing/demo purposes
///
public class SimpleAsyncQueryableService : IAsyncQueryableService
{
public IEnumerable Handlers { get; } = Array.Empty();
public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.ToList());
}
public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.FirstOrDefault());
}
public Task FirstOrDefaultAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.FirstOrDefault(predicate));
}
public Task LastOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.LastOrDefault());
}
public Task LastOrDefaultAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.LastOrDefault(predicate));
}
public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.Any(predicate));
}
public Task AllAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.All(predicate));
}
public Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.Count());
}
public Task LongCountAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.LongCount());
}
public Task SingleOrDefaultAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.SingleOrDefault(predicate));
}
public Task AnyAsync(IQueryable queryable, CancellationToken cancellationToken = default)
{
return Task.FromResult(queryable.Any());
}
public IAsyncQueryableHandlerService? GetAsyncQueryableHandler(IQueryable queryable)
{
return null; // No special handling needed for in-memory queries
}
}