[AJUDA] - Observador de alteração de dados
Boa tarde pessoa, como estão?
Estou precisando implementar um "observador" em node. Ele deve ficar observando uma linha de uma tabela X em SQl Server e, quando essa linha sofrer alteração, irá disparar uma ação. Vou tentar ilustrar:
Uma tabela, por exemplo, contém as seguintes colunas: id, nome, status;
É iserido nessa tabela: id: 1, nome: 'produto X', status: 30;
Existe um processo de uma API externa que modifica esse status de 30 para 40, ou seja, realiza um update,
Após ocorrer esse update e o status receber 40, a minha API em node precisará realizar uma ação, no caso, a criação de um log, por exemplo, ou, uma notificação de email...
Não consigo fazer isso na API externa, não tenho acesso/liberdade para alterar o código fonte.
Seria como se fosse uma fila, mas, nesse caso, não posso implementar um rabbitmq ou kafka.
Estou usando express e sequelize.
Sei que o sequelize possui métodos addHook, mas, pelo que entendi, ele fica observando manipulação da model e dentro da api.
Há alguma forma de se fazer com node e sequelize?
O Postgress tem NOTIFY e LISTEN, além do trigger! Usar NOTIFY e LISTEN vc faz no conector em JS mesmo! Não sei como funciona no SQLServer mas deve ser algo no mesmo estilo. Eventos quem sabe!
Não acho que o sequelize tenha isso! Você teria que usar outro conector
Quem sabe esta lib https://tediousjs.github.io/node-mssql/
Talvez isso te ajude: https://medium.com/@mohammedalrowad/monitoring-mysql-data-changes-in-real-time-via-nodejs-binary-logs-c379720c0333
ou
https://github.com/saostad/mssql-change-tracking
Mas o melhor seria trabalhar trabalhar com Event Sourcing na sua applicacao.
Se você tiver acesso ao banco, faça um trigger para alimentar uma tabela que você precisa observar na aplicação node e sempre esvaziar ela.