19 lines
753 B
C#
19 lines
753 B
C#
using Dapper;
|
|
using Npgsql;
|
|
|
|
namespace Kbx.Shared.Integrations;
|
|
|
|
public sealed class KbxInboxReceiptStore(NpgsqlDataSource dataSource)
|
|
{
|
|
public async Task<bool> 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;
|
|
}
|
|
}
|