125 lines
3.5 KiB
Markdown
125 lines
3.5 KiB
Markdown
# SaveInMed Seeder API
|
|
|
|
## Status (pronto x faltando)
|
|
|
|
**Pronto**
|
|
- Conteúdo descrito neste documento.
|
|
|
|
**Faltando**
|
|
- Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário.
|
|
|
|
---
|
|
|
|
|
|
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.
|
|
|
|
### Campos da Tabela `companies`
|
|
|
|
O seeder cria a tabela `companies` com os seguintes campos:
|
|
|
|
| Campo | Tipo | Descrição |
|
|
|-------|------|-----------|
|
|
| `phone` | TEXT | Telefone de contato |
|
|
| `operating_hours` | TEXT | Horário de funcionamento |
|
|
| `is_24_hours` | BOOLEAN | Se funciona 24h |
|
|
|
|
> Para schema completo, veja [docs/database-schema.md](../docs/database-schema.md)
|
|
|
|
---
|
|
|
|
## 🎯 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`.
|