36 lines
1.6 KiB
Ruby
36 lines
1.6 KiB
Ruby
# 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
|