saveinmed/seeder-api/README.md
Tiago Yamamoto 091e8093c0 feat: apply logo, document database schema, update docs
- Move logo to marketplace/src/assets/
- Apply logo in Shell.tsx header
- Add favicon and meta tags to index.html
- Create docs/database-schema.md with ER diagram
- Update README.md with database section
- Update marketplace/README.md with assets section
- Update seeder-api/README.md with new fields
2025-12-23 17:01:16 -03:00

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:

  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


🎯 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

  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.