- 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
112 lines
2.7 KiB
Markdown
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
|