saveinmed/seeder-api/README.md
Tiago Yamamoto 9997aed18a fix(backend): fix build errors, update tests, and improve documentation
- 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
2025-12-21 23:11:33 -03:00

112 lines
2.7 KiB
Markdown

# 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
```bash
DATABASE_URL=postgres://user:password@host:port/dbname?sslmode=disable
PORT=8216 # Porta padrão do seeder
```
## 🚀 Uso
### Executar Localmente
```bash
# Configurar DATABASE_URL
export DATABASE_URL=postgres://postgres:postgres@localhost:5432/saveinmed?sslmode=disable
# Executar
go run main.go
```
### Endpoint
```bash
# 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
```bash
# 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