114 lines
2.7 KiB
Markdown
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
|