- Add GetUserByEmail to Repository interface for password reset flow - Add username to UpdateUser query - Fix config_test.go: remove references to deleted DB pool fields - Fix handler_test.go: add GetUserByUsername to MockRepository - Fix usecase_test.go: add GetUserByUsername and update auth tests - Update backend README with auth and admin seeding info - Create seeder-api README with usage and warnings |
||
|---|---|---|
| .. | ||
| pkg/seeder | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
| seeder-api | ||
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:
- REMOVE todas as tabelas existentes (
companies,products,users, etc.) - RECRIA apenas as tabelas
companieseproducts - 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
- Parar o backend principal (para evitar conflitos de conexão)
- Executar o seeder:
curl -X POST http://localhost:8216/seed - Reiniciar o backend (para aplicar migrations e recriar tabela
users) - 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