6acc92dfe2
davinTI/app-dono-modulos/pipeline/head This commit looks good
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Migrations
Este projeto utiliza pressly/goose para
gerenciamento de migrações de banco de dados. Cada ERP possui seu próprio set de
migrations. Por exemplo, migrations/C5/*.sql, migrations/SENIOR/*.sql...
Instalação
go install github.com/pressly/goose/v3/cmd/goose@latest
Criando uma migração
goose -dir migrations/<ERP> create nome_da_migracao sql
Isso gera um arquivo com timestamp no formato
YYYYMMDDHHMMSS_nome_da_migracao.sql contendo seções -- +goose Up e -- +goose Down.
Boas práticas
- Sempre escreva a migração
Down: garante que a migração possa ser revertida com segurança. - Uma mudança por migração: mantenha cada arquivo focado em uma única alteração (criar tabela, adicionar coluna, etc.).
- Migrações devem ser idempotentes quando possível: use
IF NOT EXISTS/IF EXISTSpara evitar falhas em re-execução. - Nunca altere uma migração já aplicada: se algo precisa ser corrigido, crie uma nova migração.
- Evite migrações destrutivas em produção: prefira adicionar colunas nullable e remover as antigas em uma migração posterior, em vez de renomear ou deletar diretamente.
- Teste localmente antes de aplicar: rode
upedownno ambiente local para verificar que ambas as direções funcionam.