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;
    }
}
