saveinmed/seeder-api/README.md

114 lines
2.7 KiB
Markdown

# 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:
1. **REMOVE** todas as tabelas existentes (`companies`, `products`, `users`, etc.)
2. **RECRIA** as tabelas.
3. **MODO FULL**: Gera volume, mas **NÃO** cria usuários padrão (apenas estrutura).
4. **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
```bash
DATABASE_URL=postgres://user:password@host:port/dbname?sslmode=disable
PORT=8080 # Porta padrão (pode ser alterada)
```
## 🚀 Uso
### Executar Localmente
```bash
# 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!
```bash
POST http://localhost:8216/seed?mode=lean
# Resposta
"Lean seed completed. Users: admin, dono, colaborador, entregador (Pass: 123456/admin123)"
```
#### 2. Seeder Completo (Full)
```bash
POST http://localhost:8216/seed
# Resposta
{
"tenants": 400,
"products": 85432,
"location": "Anápolis, GO"
}
```
## ⚡ Fluxo de Uso Recomendado
1. **Parar o backend principal** (para evitar conflitos de conexão/locks)
2. **Executar o seeder**:
- `curl -X POST "http://localhost:8216/seed?mode=lean"`
3. **Reiniciar o backend**
4. A API estará pronta com dados de teste e usuários para login.
## 🐳 Docker
```bash
# 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