#if NET using Dapper; using EnvelopeGenerator.Application.Common.Interfaces.SQLExecutor; using Microsoft.Data.SqlClient; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace EnvelopeGenerator.Infrastructure.Executor; public class SQLExecutor : ISQLExecutor { protected readonly SQLExecutorParams Params; protected readonly IServiceProvider Provider; public SQLExecutor(IServiceProvider provider, IOptions sqlExecutorParamsOptions) { Provider = provider; Params = sqlExecutorParamsOptions.Value; } public async Task> Execute(string sql, DynamicParameters parameters, CancellationToken cancellation = default) { using var connection = new SqlConnection(Params.ConnectionString); await connection.OpenAsync(cancellation); return await connection.QueryAsync(sql, parameters); } public Task> Execute(DynamicParameters parameters, CancellationToken cancellation = default) where TSQL : ISQL { var sql = Provider.GetRequiredService(); return Execute(sql.Raw, parameters, cancellation); } } #endif