- Added a record `QueryExecutor<TEntity>` implementing `IQueryExecutor<TEntity>` for executing common query operations like First, Single, and ToList both synchronously and asynchronously. - Methods leverage the IQueryable interface to perform database queries for entity types.
35 lines
955 B
C#
35 lines
955 B
C#
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace EnvelopeGenerator.Infrastructure;
|
|
|
|
public record QueryExecutor<TEntity>(IQueryable<TEntity> Queryable) : IQueryExecutor<TEntity>
|
|
{
|
|
public TEntity First() => Queryable.First();
|
|
|
|
public Task<TEntity> FirstAsync() => Queryable.FirstAsync();
|
|
|
|
public TEntity? FirstOrDefault() => Queryable.FirstOrDefault();
|
|
|
|
|
|
public Task<TEntity?> FirstOrDefaultAsync() => Queryable.FirstOrDefaultAsync();
|
|
|
|
|
|
public TEntity Single() => Queryable.Single();
|
|
|
|
|
|
public Task<TEntity> SingleAsync() => Queryable.SingleAsync();
|
|
|
|
|
|
public TEntity? SingleOrDefault() => Queryable.SingleOrDefault();
|
|
|
|
|
|
public Task<TEntity?> SingleOrDefaultAsync() => Queryable.SingleOrDefaultAsync();
|
|
|
|
|
|
public IEnumerable<TEntity> ToList() => Queryable.ToList();
|
|
|
|
|
|
public async Task<IEnumerable<TEntity>> ToListAsync() => await Queryable.ToListAsync();
|
|
}
|