feat: Implement QueryExecutor for executing queries using IQueryable
- 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.
This commit is contained in:
34
EnvelopeGenerator.Infrastructure/QueryExecutor.cs
Normal file
34
EnvelopeGenerator.Infrastructure/QueryExecutor.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user