diff --git a/EnvelopeGenerator.Application/Contracts/SQLExecutor/IDocumentExecutor.cs b/EnvelopeGenerator.Application/Contracts/SQLExecutor/IDocumentExecutor.cs new file mode 100644 index 00000000..e3163f5e --- /dev/null +++ b/EnvelopeGenerator.Application/Contracts/SQLExecutor/IDocumentExecutor.cs @@ -0,0 +1,18 @@ +using EnvelopeGenerator.Domain.Entities; + +namespace EnvelopeGenerator.Application.Contracts.SQLExecutor; + +/// +/// +/// +public interface IDocumentExecutor +{ + /// + /// + /// + /// + /// + /// + /// + Task CreateDocumentAsync(string base64, string envelope_uuid, CancellationToken cancellation = default); +} diff --git a/EnvelopeGenerator.Infrastructure/Executor/DocumentExecutor.cs b/EnvelopeGenerator.Infrastructure/Executor/DocumentExecutor.cs new file mode 100644 index 00000000..7143b81e --- /dev/null +++ b/EnvelopeGenerator.Infrastructure/Executor/DocumentExecutor.cs @@ -0,0 +1,28 @@ +using Dapper; +using EnvelopeGenerator.Application.Contracts.SQLExecutor; +using EnvelopeGenerator.Application.SQL; +using EnvelopeGenerator.Domain.Entities; +using Microsoft.Data.SqlClient; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; + +namespace EnvelopeGenerator.Infrastructure.Executor; + +public class DocumentExecutor : SQLExecutor, IDocumentExecutor +{ + public DocumentExecutor(IServiceProvider provider, IOptions sqlExecutorParamsOptions) : base(provider, sqlExecutorParamsOptions) + { + } + + public async Task CreateDocumentAsync(string base64, string envelope_uuid, CancellationToken cancellation = default) + { + using var connection = new SqlConnection(Params.ConnectionString); + var sql = Provider.GetRequiredService(); + await connection.OpenAsync(cancellation); + var parameters = DocumentCreateReadSQL.CreateParmas(base64, envelope_uuid); + var documents = await connection.QueryAsync(sql.Raw, parameters); + return documents.FirstOrDefault() + ?? throw new InvalidOperationException($"Document creation failed. Parameters:" + + $"base64={base64}, envelope_uuid='{envelope_uuid}'."); + } +}