3.3 KiB
3.3 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 com 4 Farmácias em Anápolis e equipe completa em cada uma:
1. Farmácia Central (Sufixo 1)
- CNPJ: 11.111.111/0001-11
- Usuários:
dono1,colab1,entregador1(Senha: 123456) - Localização: Centro de Anápolis
2. Farmácia Jundiaí (Sufixo 2)
- CNPJ: 22.222.222/0001-22
- Usuários:
dono2,colab2,entregador2(Senha: 123456) - Localização: Bairro Jundiaí (Norte/Leste)
3. Farmácia Jaiara (Sufixo 3)
- CNPJ: 33.333.333/0001-33
- Usuários:
dono3,colab3,entregador3(Senha: 123456) - Localização: Vila Jaiara (Norte/Oeste)
4. Farmácia Universitária (Sufixo 4)
- CNPJ: 44.444.444/0001-44
- Usuários:
dono4,colab4,entregador4(Senha: 123456) - Localização: Cidade Universitária (Sul/Leste)
Admin Global
- Usuário:
admin(Senha: admin123)
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