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 = falseautomaticamente. - Nenhum valor
NULLé permitido emdeleted.
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
deletedcomo booleano (trueoufalse), nuncanull.