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