Pular para conteúdo

Soft delete e coluna deleted

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-06

As tabelas de negócio (contratos, estoque, fones, itens, itenslote, itensped, itenspedamx, itpedamxdi, loteest, municipio, notacompl, propriedades, tbpcoest, veiculos) possuem exclusão lógica:

  • deleted: BOOLEAN NOT NULL DEFAULT false — indica se o registro foi excluído (soft delete).
  • deleted_at: TIMESTAMPTZ NULL — data/hora da exclusão.

Regra no banco

A coluna deleted é sempre NOT NULL e tem DEFAULT false. Isso evita null no mobile e em integrações:

  • Novos registros passam a ter deleted = false automaticamente.
  • Nenhum valor NULL é permitido em deleted.

A migration V7__deleted_not_null_default_false.sql garante isso em todas as tabelas (preenche NULL existentes com false, define default e aplica NOT NULL).

Uso na API

  • DELETE (API v1): faz soft delete (deleted = true, deleted_at = now()).
  • POST com a mesma chave: restaura o registro (deleted = false, deleted_at = null).
  • Respostas da API sempre trazem deleted como booleano (true ou false), nunca null.