O que é uma migration?
Uma migration é um arquivo que descreve uma mudança na estrutura do banco de dados.
Ela funciona como um registro organizado de tudo o que precisa ser alterado no banco.
Com migrations, conseguimos:
- Criar tabelas
- Alterar tabelas (adicionar/remover colunas)
- Criar índices
- Inserir dados iniciais (seed)
- Desfazer alterações (rollback) se algo der errado
📦 Por que usar migrations?
Sem migrations, cada desenvolvedor teria que rodar comandos SQL manualmente. Isso gera erros, inconsistências e muita confusão entre ambientes.
Com migrations:
- O código sabe exatamente qual versão do banco está sendo usada.
- O banco pode ser atualizado automaticamente.
- Todas as mudanças ficam registradas historicamente.
- Todos os ambientes (dev, teste, produção) ficam sincronizados.
🛠 Por que ainda não está funcionando?
Porque ainda não criamos as nossas tabelas. Vamos confirmar isso acessando o banco:
docker exec -it postgres psql -U user -d appdbVerifique se existem tabelas:
dtSe você observar que não há nada, isso confirma o problema:
👉 precisamos rodar as migrations para criar as tabelas.
🚀 Aplicando as migrations
Agora vamos aplicar as migrations com o Alembic:
docker exec -it backend alembic upgrade headDepois disso, se tudo correu bem, ao listar as tabelas novamente você deverá ver algo assim:
Schema | Name | Type | Owner
--------+-----------------+-------+-------
public | alembic_version | table | user
public | companies | table | user
public | users | table | user