Implantação da geração de mensagem de forma livre e mudança na engine de mensagem
This commit is contained in:
35
db/migrate/20260824000007_semear_eventos_de_gatilho.rb
Normal file
35
db/migrate/20260824000007_semear_eventos_de_gatilho.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
# Cria os eventos de sistema dos gatilhos ligados na etapa 3.
|
||||
#
|
||||
# Sem isso, `Despachante.disparar(chave: 'valor_alterado')` não acharia evento
|
||||
# nenhum e o gatilho ficaria mudo — e o ADM teria de adivinhar que precisa criar
|
||||
# um evento cujo nome gere exatamente aquela `chave`.
|
||||
#
|
||||
# Nascem ATIVOS e isso é seguro: sem grupo assinante não há destinatário, então
|
||||
# nada é enviado até o ADM marcar um grupo na tela.
|
||||
class SemearEventosDeGatilho < ActiveRecord::Migration[7.1]
|
||||
EVENTOS = [
|
||||
['Valor alterado no fechamento', 'valor_alterado', 'valor_alterado',
|
||||
'Disparado quando o valor de um motorista muda depois da consolidação finalizada.'],
|
||||
['Dados da operação mudaram', 'operacao_alterada', 'operacao_alterada',
|
||||
'NF que entrou ou saiu, entrega que trocou de status, lançamento corrigido no SimpliRoute.']
|
||||
].freeze
|
||||
|
||||
def up
|
||||
EVENTOS.each do |nome, chave, gatilho, descricao|
|
||||
# Idempotente: rodar de novo (ou num banco que já tenha o evento criado à
|
||||
# mão) não pode estourar índice único.
|
||||
next if select_value("SELECT 1 FROM eventos_notificacao WHERE chave = #{quote(chave)}")
|
||||
|
||||
execute(<<~SQL.squish)
|
||||
INSERT INTO eventos_notificacao
|
||||
(nome, chave, gatilho, descricao, ativo, sistema, notificar_envolvido, hora, created_at, updated_at)
|
||||
VALUES (#{quote(nome)}, #{quote(chave)}, #{quote(gatilho)}, #{quote(descricao)},
|
||||
true, true, true, 8, NOW(), NOW())
|
||||
SQL
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
EVENTOS.each { |_, chave, _, _| execute("DELETE FROM eventos_notificacao WHERE chave = #{quote(chave)}") }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user