saveinmed/seeder-api/README.md

133 lines
3.3 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 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
```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