saveinmed/seeder-api/README.md

3.3 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 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

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