# SaveInMed Seeder API ## Status (pronto x faltando) **Pronto** - Conteúdo descrito neste documento. **Faltando** - Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário. --- 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: 1. **REMOVE** todas as tabelas existentes (`companies`, `products`, `users`, etc.) 2. **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](../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: ```bash export DATABASE_URL=postgres://user:password@localhost:5432/saveinmed?sslmode=disable export PORT=8216 ``` ### 2. Executar API ```bash go run main.go ``` ### 3. Disparar o Seed (Em outro terminal) **Opção A: Resetar e Criar Dados de Dev (Lean)** ```bash 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)** ```bash curl -X POST "http://localhost:8216/seed" ``` ## 📜 Swagger/OpenAPI O documento OpenAPI está disponível em: ```bash curl http://localhost:8216/swagger.json ``` ## 🐳 Docker (imagem otimizada) Build: ```bash docker build -t saveinmed-seeder-api . ``` Run: ```bash docker run --rm -p 8216:8080 --env-file .env saveinmed-seeder-api ``` ## ⚡ Fluxo Recomendado de Trabalho 1. Pare o backend principal (`backend-go`) para liberar conexões com o banco. 2. Rode o seeder: `go run main.go` em um terminal. 3. Dispare o curl: `curl -X POST "http://localhost:8216/seed?mode=lean"`. 4. Pare o seeder (Ctrl+C). 5. Inicie o backend principal novamente. 6. Faça login no painel com `dono1` / `123456`.