/
rezvich
/
adapter_v
Обзор
Документация
Войти
/
rezvich
/
adapter_v
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Repositories/InboxRepository.cs
69 строк
2 KB
ItsEnd
HttpClientFactory для SOAP
21 дек 2025, 18:15
21 дек 2025, 18:15
a4a1c0f
Код
Авторство
О чём код?
using Microsoft.Data.SqlClient; using Microsoft.Extensions.Configuration; namespace adapter_v.Repositories { public interface IInboxRepository { Task InsertResponseAsync( long outboxId, string url, Guid? externalRequestId, int? httpStatus, string? responseRaw, string? errorText, CancellationToken ct = default); } public sealed class InboxRepository : IInboxRepository { private readonly string _cs; public InboxRepository(IConfiguration cfg) { _cs = cfg.GetConnectionString("Db") ?? throw new InvalidOperationException("ConnectionStrings:Db not found"); } public async Task InsertResponseAsync( long outboxId, string url, Guid? externalRequestId, int? httpStatus, string? responseRaw, string? errorText, CancellationToken ct = default) { const string sql = @" INSERT INTO dbo.SoapInbox(outbox_id, url, external_request_id, http_status, response_raw, error_text) VALUES (@outbox_id, @url, @external_request_id, @http_status, @response_raw, @error_text); "; await using var con = new SqlConnection(_cs); await con.OpenAsync(ct); await using var cmd = new SqlCommand(sql, con); cmd.Parameters.Add(new SqlParameter("@outbox_id", System.Data.SqlDbType.BigInt) { Value = outboxId }); cmd.Parameters.Add(new SqlParameter("@url", System.Data.SqlDbType.NVarChar, 2048) { Value = url }); cmd.Parameters.Add(new SqlParameter("@external_request_id", System.Data.SqlDbType.UniqueIdentifier) { Value = (object?)externalRequestId ?? DBNull.Value }); cmd.Parameters.Add(new SqlParameter("@http_status", System.Data.SqlDbType.Int) { Value = (object?)httpStatus ?? DBNull.Value }); cmd.Parameters.Add(new SqlParameter("@response_raw", System.Data.SqlDbType.NVarChar, -1) { Value = (object?)responseRaw ?? DBNull.Value }); cmd.Parameters.Add(new SqlParameter("@error_text", System.Data.SqlDbType.NVarChar, -1) { Value = (object?)errorText ?? DBNull.Value }); await cmd.ExecuteNonQueryAsync(ct); } } }