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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    • Status
      to do

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions