saveinmed/seeder-api
2025-12-26 17:24:57 -03:00
..
docs fix(marketplace): ensure auth token is set before initial requests 2025-12-26 17:24:57 -03:00
pkg/seeder feat: implement 2-step product registration with new catalog fields 2025-12-23 17:09:38 -03:00
.env.example Update seeder env example 2025-12-22 12:05:25 -03:00
.gitignore docs(seeder): update documentation, fix go.mod and ignore binary 2025-12-22 01:38:41 -03:00
Dockerfile Add env example, swagger, and Dockerfile for seeder api 2025-12-22 11:31:18 -03:00
go.mod docs(seeder): update documentation, fix go.mod and ignore binary 2025-12-22 01:38:41 -03:00
go.sum refactor: move seeder to api, improve coverage and security 2025-12-20 11:13:53 -03:00
main.go Add open CORS handling to seeder API 2025-12-22 11:38:52 -03:00
README.md feat: apply logo, document database schema, update docs 2025-12-23 17:01:16 -03:00

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.