Developer 02 6e82b24578 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.
2025-04-29 16:56:13 +02:00

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();
}