# 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
