saveinmed/seeder-api/README.md

2.7 KiB

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

DATABASE_URL=postgres://user:password@host:port/dbname?sslmode=disable
PORT=8080  # Porta padrão (pode ser alterada)

🚀 Uso

Executar Localmente

# 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!

POST http://localhost:8216/seed?mode=lean

# Resposta
"Lean seed completed. Users: admin, dono, colaborador, entregador (Pass: 123456/admin123)"

2. Seeder Completo (Full)

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

# 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