using Dapper; using Npgsql; namespace Kbx.Shared.Integrations; public sealed class KbxInboxReceiptStore(NpgsqlDataSource dataSource) { public async Task TryBeginAsync(Guid tenantId, string integrationId, string messageKey, CancellationToken ct) { const string sql=""" insert into kbx.integration_receipts(tenant_id,integration_id,message_key,received_at) values (@TenantId,@IntegrationId,@MessageKey,now()) on conflict do nothing; """; await using var connection=await dataSource.OpenConnectionAsync(ct); return await connection.ExecuteAsync(new CommandDefinition(sql,new { TenantId=tenantId, IntegrationId=integrationId, MessageKey=messageKey },cancellationToken:ct))==1; } }