2.7 KiB
2.7 KiB
SaveInMed Seeder API
Microserviço utilitário para popular o banco de dados com dados de teste para desenvolvimento e demonstração.
⚠️ AVISO IMPORTANTE
Este serviço é DESTRUTIVO! Ele:
- REMOVE todas as tabelas existentes (
companies,products,users, etc.) - RECRIA as tabelas.
- MODO FULL: Gera volume, mas NÃO cria usuários padrão (apenas estrutura).
- MODO LEAN: Gera dados mínimos e CRIA usuários padrão (admin, dono, etc.).
🎯 Modos de Operação
1. mode=lean (Recomendado para Dev)
Gera um ambiente funcional mínimo:
- 1 Farmácia (Farmácia Modelo)
- 4 Usuários (Admin, Dono, Colaborador, Entregador)
- 15 Produtos
- Ideal para testar fluxos de login, carrinho, checkout.
2. mode=full (Padrão/Load Test)
Gera volume de dados:
- 400 Farmácias
- ~85.000 Produtos
- SEM USUÁRIOS (Tabela criada, mas vazia)
- Ideal para testar performance, busca geografia, clusterização no mapa.
🏗️ Arquitetura
seeder-api/
├── main.go # Entry point HTTP (POST /seed)
├── pkg/
├── seeder/
│ └── seeder.go # Lógica de geração de dados
├── go.mod
└── go.sum
Variáveis de Ambiente
DATABASE_URL=postgres://user:password@host:port/dbname?sslmode=disable
PORT=8080 # Porta padrão (pode ser alterada)
🚀 Uso
Executar Localmente
# Configurar DATABASE_URL
export DATABASE_URL=postgres://postgres:postgres@localhost:5432/saveinmed?sslmode=disable
export PORT=8216
# Executar
go run main.go
Endpoints
1. Seeder Rápido (Lean) - Cria Usuários!
POST http://localhost:8216/seed?mode=lean
# Resposta
"Lean seed completed. Users: admin, dono, colaborador, entregador (Pass: 123456/admin123)"
2. Seeder Completo (Full)
POST http://localhost:8216/seed
# Resposta
{
"tenants": 400,
"products": 85432,
"location": "Anápolis, GO"
}
⚡ Fluxo de Uso Recomendado
- Parar o backend principal (para evitar conflitos de conexão/locks)
- Executar o seeder:
curl -X POST "http://localhost:8216/seed?mode=lean"
- Reiniciar o backend
- A API estará pronta com dados de teste e usuários para login.
🐳 Docker
# Build
docker build -t saveinmed-seeder:latest .
# Run
docker run -p 8216:8216 \
-e DATABASE_URL=postgres://user:password@host:5432/saveinmed \
-e PORT=8216 \
saveinmed-seeder:latest
# Seed (Lean)
curl -X POST "http://localhost:8216/seed?mode=lean"
📝 Notas
- Os dados são regeneráveis - execute novamente para limpar e recriar.
- NÃO USE EM PRODUÇÃO - vai apagar todos os dados reais!
📝 Licença
MIT