saveinmed/seeder-api/README.md

102 lines
2.9 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!** Ao rodar qualquer seed:
1. **REMOVE** todas as tabelas existentes (`companies`, `products`, `users`, etc.)
2. **RECRIA** as tabelas do zero.
---
## 🎯 Modos de Operação
### 1. `mode=lean` (Desenvolvimento)
**Fluxo:** Limpa tudo > Cria tabelas > Cria 4 farmácias > **Cria Usuários para Login**.
Use este modo para desenvolvimento diário. Ele cria as seguintes credenciais de acesso:
| Farmácia | Função | Usuário | Senha |
|---|---|---|---|
| **Farmácia Central** | Dono | `dono1` | `123456` |
| | Colaborador | `colab1` | `123456` |
| | Entregador | `entregador1` | `123456` |
| **Farmácia Jundiaí** | Dono | `dono2` | `123456` |
| | Colaborador | `colab2` | `123456` |
| | Entregador | `entregador2` | `123456` |
| **Farmácia Jaiara** | Dono | `dono3` | `123456` |
| | Colaborador | `colab3` | `123456` |
| | Entregador | `entregador3` | `123456` |
| **Farmácia Universitária** | Dono | `dono4` | `123456` |
| | Colaborador | `colab4` | `123456` |
| | Entregador | `entregador4` | `123456` |
| **Global** | **Admin** | `admin` | `admin123` |
### 2. `mode=full` (Teste de Carga)
**Fluxo:** Limpa tudo > Cria tabelas > Gera ~400 farmácias e ~85k produtos.
**⚠️ Importante:** O modo FULL **NÃO** cria usuários de farmácia padrão para login, apenas o admin global pode existir (dependendo da implementação). Use apenas para testar performance de queries geográficas ou listagens massivas.
---
## 🚀 Como Rodar
### Pré-requisitos
- PostgreSQL rodando
- Go 1.22+
### 1. Configurar
Use o arquivo `.env.example` como base e configure as variáveis:
```bash
export DATABASE_URL=postgres://user:password@localhost:5432/saveinmed?sslmode=disable
export PORT=8216
```
### 2. Executar API
```bash
go run main.go
```
### 3. Disparar o Seed (Em outro terminal)
**Opção A: Resetar e Criar Dados de Dev (Lean)**
```bash
curl -X POST "http://localhost:8216/seed?mode=lean"
```
_Saída esperada:_
`"Lean seed completed. 4 Pharmacies. Users: 13. Pass: 123456 (admin: admin123)"`
**Opção B: Resetar e Criar Dados de Carga (Full)**
```bash
curl -X POST "http://localhost:8216/seed"
```
## 📜 Swagger/OpenAPI
O documento OpenAPI está disponível em:
```bash
curl http://localhost:8216/swagger.json
```
## 🐳 Docker (imagem otimizada)
Build:
```bash
docker build -t saveinmed-seeder-api .
```
Run:
```bash
docker run --rm -p 8216:8080 --env-file .env saveinmed-seeder-api
```
## ⚡ Fluxo Recomendado de Trabalho
1. Pare o backend principal (`backend-go`) para liberar conexões com o banco.
2. Rode o seeder: `go run main.go` em um terminal.
3. Dispare o curl: `curl -X POST "http://localhost:8216/seed?mode=lean"`.
4. Pare o seeder (Ctrl+C).
5. Inicie o backend principal novamente.
6. Faça login no painel com `dono1` / `123456`.