saveinmed/seeder-api
2025-12-22 01:30:55 -03:00
..
pkg/seeder feat: RBAC implementation and Seeder refactor 2025-12-22 01:30:55 -03:00
go.mod refactor: move seeder to api, improve coverage and security 2025-12-20 11:13:53 -03:00
go.sum refactor: move seeder to api, improve coverage and security 2025-12-20 11:13:53 -03:00
main.go feat: RBAC implementation and Seeder refactor 2025-12-22 01:30:55 -03:00
README.md fix(backend): fix build errors, update tests, and improve documentation 2025-12-21 23:11:33 -03:00
seeder-api refactor: move seeder to api, improve coverage and security 2025-12-20 11:13:53 -03:00

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 apenas as tabelas companies e products
  3. NÃO RECRIA a tabela users - você precisa reiniciar o backend após usar o seeder

🎯 Propósito

Gerar dados de teste para o marketplace SaveInMed, criando:

  • 400 farmácias na região de Anápolis/GO
  • 20-500 produtos por farmácia
  • Dados variados de medicamentos com preços e validades realistas

🏗️ 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

📍 Dados Gerados

Localização

  • Centro em Anápolis, GO (Lat: -16.3281, Lng: -48.9530)
  • Variação de ~5km para cada farmácia

Farmácias

  • Quantidade: 400 empresas
  • Categoria: farmacia
  • 70% verificadas (is_verified = true)
  • CNPJs gerados automaticamente

Produtos (Medicamentos)

  • 20-500 produtos por farmácia
  • Categorias: Analgésicos, Antibióticos, Anti-inflamatórios, Cardiovasculares, Dermatológicos, Vitaminas, Oftálmicos, Respiratórios, etc.
  • Validade: 30 dias a 2 anos
  • Variação de preço: -20% a +30% do preço base

🔧 Variáveis de Ambiente

DATABASE_URL=postgres://user:password@host:port/dbname?sslmode=disable
PORT=8216  # Porta padrão do seeder

🚀 Uso

Executar Localmente

# Configurar DATABASE_URL
export DATABASE_URL=postgres://postgres:postgres@localhost:5432/saveinmed?sslmode=disable

# Executar
go run main.go

Endpoint

# Iniciar seeding
POST http://localhost:8216/seed

# Resposta de sucesso
{
  "tenants": 400,
  "products": 85432,
  "location": "Anápolis, GO"
}

Fluxo de Uso Recomendado

  1. Parar o backend principal (para evitar conflitos de conexão)
  2. Executar o seeder: curl -X POST http://localhost:8216/seed
  3. Reiniciar o backend (para aplicar migrations e recriar tabela users)
  4. A API estará pronta com dados de teste

🐳 Docker

# Build
docker build -t saveinmed-seeder:latest .

# Run
docker run -p 8216:8216 \
  -e DATABASE_URL=postgres://user:password@host:5432/saveinmed \
  saveinmed-seeder:latest

# Seed
curl -X POST http://localhost:8216/seed

📝 Notas

  • Os dados são regeneráveis - execute novamente para limpar e recriar
  • Ideal para ambientes de desenvolvimento e staging
  • NÃO USE EM PRODUÇÃO - vai apagar todos os dados reais!

📝 Licença

MIT