# Retrato dos números de cada operação, para detectar o que MUDOU entre uma
# varredura e a seguinte.
#
# A maior parte das mudanças da operação não passa pelo nosso código: elas
# acontecem no SimpliRoute e chegam pelo sync do espelho (que é read-only aqui).
# Sem guardar o retrato anterior não há como dizer "3 NFs entraram, 1 saiu" —
# só dá para mostrar o número de agora, que é o que os dashboards já fazem.
#
# Uma linha por tabela de operação. É snapshot, não histórico: a linha é
# ATUALIZADA a cada varredura. Guardar a série inteira seria outra feature (e a
# tabela cresceria por operação × varredura sem ninguém consultar).
class CreateOperacaoSnapshots < ActiveRecord::Migration[7.1]
  def change
    create_table :operacao_snapshots do |t|
      t.string  :tabela,         null: false
      t.integer :total_notas,    null: false, default: 0
      t.integer :entregues,      null: false, default: 0
      t.integer :nao_entregues,  null: false, default: 0
      t.integer :pendentes,      null: false, default: 0
      t.datetime :capturado_em,  null: false

      t.timestamps
    end

    add_index :operacao_snapshots, :tabela, unique: true
  end
end
