Restructure and refactor classes related to SQL execution within the `EnvelopeGenerator.Infrastructure` namespace. Key changes include: - Added `EnvelopeGenerator.Infrastructure.Executor` namespace. - Moved and redefined `Query`, `QueryExtension`, `SQLExecutor`, `SQLExecutorBaseEntity`, and `SQLExecutorParams` classes to the new namespace. - Maintained existing functionality while improving code organization and clarity.
33 lines
1.2 KiB
C#
33 lines
1.2 KiB
C#
using Dapper;
|
|
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
|
|
using Microsoft.Data.SqlClient;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace EnvelopeGenerator.Infrastructure.Executor;
|
|
|
|
public class SQLExecutor : ISQLExecutor
|
|
{
|
|
private readonly SQLExecutorParams _params;
|
|
|
|
private readonly IServiceProvider _provider;
|
|
|
|
public SQLExecutor(IServiceProvider provider, IOptions<SQLExecutorParams> sqlExecutorParamsOptions)
|
|
{
|
|
_provider = provider;
|
|
_params = sqlExecutorParamsOptions.Value;
|
|
}
|
|
|
|
public async Task<IEnumerable<TEntity>> Execute<TEntity>(string sql, DynamicParameters parameters, CancellationToken cancellation = default)
|
|
{
|
|
using var connection = new SqlConnection(_params.ConnectionString);
|
|
await connection.OpenAsync(cancellation);
|
|
return await connection.QueryAsync<TEntity>(sql, parameters);
|
|
}
|
|
|
|
public Task<IEnumerable<TEntity>> Execute<TEntity, TSQL>(DynamicParameters parameters, CancellationToken cancellation = default) where TSQL : ISQL
|
|
{
|
|
var sql = _provider.GetRequiredService<TSQL>();
|
|
return Execute<TEntity>(sql.Raw, parameters, cancellation);
|
|
}
|
|
} |