Por exemplo um checkout de pagamento, em que eu salvo no banco algumas tabelas e tambem faço operações com api externa para comfirmar a compra. Como to usando varios arquivos nao consigo fazer a transação cobrir todos os casos de maneira convencional, ate tem como funcionar porem gera acoplamento e sinceramente parece gambiarra. To usando nestjs com typeorm.
Acho que vc está confundido conceitos, caro amigo.
neste caso vc não está falando apenas de transaction
e sim de resiliencia, como deixar minha operação
resiliente
a falhas.
"Chegou uma compra nova na minha API de checkout, preciso fazer algumas operações para validar a compra e enviar as informações da compra para o usuário"
Primeira cosia que eu faria é salvar no meu banco de dados um novo pedido, independente de qualquer operação externa.
Depois eu emitiria um evento chamado newOrder
para minhas apis externas, como estoque, logistica, ERP e tudo mais.
Depois do envio de tais eventos, eu colocaria o status
do pedido e mudaria para em processamento
,
Aguardaria o retorno de todas as APIs externas via hook ou mensageria, depois da conclusão de todas e minha lógica entender que o produto já foi validado, iria emitir um novo evento OrderSuccess
que avisaria o meu usuário que de tudo certo.
Faz sentido para vc?