Files
tkinaba f3497dbff3
davinTI/app-dono-modulos/pipeline/head There was a failure building this commit
doc: migrations
2026-03-27 17:09:12 -03:00

38 lines
1.3 KiB
Markdown

# Migrations
Este projeto utiliza [pressly/goose](https://github.com/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
```bash
go install github.com/pressly/goose/v3/cmd/goose@latest
```
## Criando uma migração
```bash
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 EXISTS` para 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 `up` e `down` no ambiente local
para verificar que ambas as direções funcionam.