Seeder API: - 110 pharmacies across 5 cities (Goiânia 72, Anápolis 22, Nerópolis 10, Senador Canedo 5, Aparecida 1) - 3-300 products per pharmacy - Dynamic city/state in company records Payment Gateways: - stripe.go: Stripe integration with PaymentIntent - mock.go: Mock gateway with auto-approve for testing - PaymentResult and RefundResult domain types Documentation: - docs/BACKEND.md: Architecture, invisible fee, endpoints - docs/SEEDER_API.md: City distribution, product counts - docs/MARKETPLACE.md: Frontend structure, stores, utils - docs/BACKOFFICE.md: Admin features, encrypted settings
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! Ao rodar qualquer seed:
- REMOVE todas as tabelas existentes (
companies,products,users, etc.) - RECRIA as tabelas do zero.
Campos da Tabela companies
O seeder cria a tabela companies com os seguintes campos:
| Campo | Tipo | Descrição |
|---|---|---|
phone |
TEXT | Telefone de contato |
operating_hours |
TEXT | Horário de funcionamento |
is_24_hours |
BOOLEAN | Se funciona 24h |
Para schema completo, veja docs/database-schema.md
🎯 Modos de Operação
1. mode=lean (Desenvolvimento)
Fluxo: Limpa tudo > Cria tabelas > Cria 4 farmácias > Cria Usuários para Login.
Use este modo para desenvolvimento diário. Ele cria as seguintes credenciais de acesso:
| Farmácia | Função | Usuário | Senha |
|---|---|---|---|
| Farmácia Central | Dono | dono1 |
123456 |
| Colaborador | colab1 |
123456 |
|
| Entregador | entregador1 |
123456 |
|
| Farmácia Jundiaí | Dono | dono2 |
123456 |
| Colaborador | colab2 |
123456 |
|
| Entregador | entregador2 |
123456 |
|
| Farmácia Jaiara | Dono | dono3 |
123456 |
| Colaborador | colab3 |
123456 |
|
| Entregador | entregador3 |
123456 |
|
| Farmácia Universitária | Dono | dono4 |
123456 |
| Colaborador | colab4 |
123456 |
|
| Entregador | entregador4 |
123456 |
|
| Global | Admin | admin |
admin123 |
2. mode=full (Teste de Carga)
Fluxo: Limpa tudo > Cria tabelas > Gera ~400 farmácias e ~85k produtos.
⚠️ Importante: O modo FULL NÃO cria usuários de farmácia padrão para login, apenas o admin global pode existir (dependendo da implementação). Use apenas para testar performance de queries geográficas ou listagens massivas.
🚀 Como Rodar
Pré-requisitos
- PostgreSQL rodando
- Go 1.22+
1. Configurar
Use o arquivo .env.example como base e configure as variáveis:
export DATABASE_URL=postgres://user:password@localhost:5432/saveinmed?sslmode=disable
export PORT=8216
2. Executar API
go run main.go
3. Disparar o Seed (Em outro terminal)
Opção A: Resetar e Criar Dados de Dev (Lean)
curl -X POST "http://localhost:8216/seed?mode=lean"
Saída esperada:
"Lean seed completed. 4 Pharmacies. Users: 13. Pass: 123456 (admin: admin123)"
Opção B: Resetar e Criar Dados de Carga (Full)
curl -X POST "http://localhost:8216/seed"
📜 Swagger/OpenAPI
O documento OpenAPI está disponível em:
curl http://localhost:8216/swagger.json
🐳 Docker (imagem otimizada)
Build:
docker build -t saveinmed-seeder-api .
Run:
docker run --rm -p 8216:8080 --env-file .env saveinmed-seeder-api
⚡ Fluxo Recomendado de Trabalho
- Pare o backend principal (
backend-go) para liberar conexões com o banco. - Rode o seeder:
go run main.goem um terminal. - Dispare o curl:
curl -X POST "http://localhost:8216/seed?mode=lean". - Pare o seeder (Ctrl+C).
- Inicie o backend principal novamente.
- Faça login no painel com
dono1/123456.