Skip to content

Adicionar FK de fase sucessional em tombos e encerrar fase_numero em locais de coleta #511

Description

@edvaldoszy

Visão geral

tombos.fase_sucessional_id já existe, é anulável e o Sequelize associa o tombo à fase sucessional por essa coluna. No dump de integração (e no mesmo tipo de dump de produção) não há FOREIGN KEY nem índice nela.

A migration 20251117200002_add_fase_sucessional_tombo só cria coluna e FK se a coluna ainda não existir. No dump atual a coluna já está lá, então esse ramo nunca rodou. Depois de #488 a chave primária da fase é id; a FK que faltou precisa apontar para isso.

Em locais_coleta ainda existe fase_numero, nomeado pela PK antiga numero. Essa coluna continua com FK para fase_sucessional(id), em paralelo a fase_sucessional_id, que é a única referência usada pelo modelo e pelas telas.

Esta issue existe para o banco passar a garantir a referência do tombo que o modelo já assume, e para o local de coleta deixar de carregar a coluna cujo nome ainda é o numero da fase.

Fora de escopo

  • Alterar ou reescrever 20251117200002_add_fase_sucessional_tombo.
  • Scripts de conversão em hcf-web.
  • Mudança de controllers, validadores ou telas; a leitura por id já segue Renomear coluna numero para id da fase sucessional #488.
  • ON DELETE SET NULL ou ON UPDATE CASCADE na FK de tombos.
  • Cadastro, rename de nome ou exclusão de fases sucessionais.

Critérios de aceite

Tombo

  • Com a PK fase_sucessional.id já em vigor, passa a existir FK de tombos.fase_sucessional_id para fase_sucessional(id), sem reescrever migration já aplicada.
  • Essa FK usa ON UPDATE RESTRICT e ON DELETE RESTRICT.
  • Existe índice btree em tombos.fase_sucessional_id.
  • Órfãos (id não nulo sem fase correspondente) são anulados, ou a alteração de schema recusa e informa a quantidade, e a FK não fica pela metade.
  • fase_sucessional_id nulo no tombo continua permitido; valor que não existe em fase_sucessional passa a ser recusado pelo banco.

Local de coleta

  • Não resta em locais_coleta coluna cujo nome ainda seja o numero da fase (fase_numero).
  • A referência à fase no local de coleta fica só em fase_sucessional_id, com a FK atual para fase_sucessional(id) mantida.
  • Local que só tinha valor em fase_numero passa a tê-lo em fase_sucessional_id e continua apontando para a mesma fase.
  • Locais em que fase_numero e fase_sucessional_id divergem não são alterados em silêncio: a alteração recusa e informa a quantidade.

Comum

  • O dump de integração descreve o mesmo estado final; a suíte de integração continua carregando esse dump.
  • Tombos e locais de coleta que já apontavam para fases válidas por fase_sucessional_id continuam apontando para as mesmas linhas.
  • Seleção de fase sucessional no tombo e no local de coleta continua se comportando como hoje.

Relacionadas

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    • Status
      to do

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions