Pular para o conteúdo principal
Este guia leva você de um checkout limpo a um ambiente Fetcher em execução e um job de extração concluído. Tudo roda localmente com Docker Compose. Ao final, você terá:
  • Manager, Worker e sua infraestrutura rodando localmente
  • Uma conexão de banco de dados registrada e testada
  • Um job de extração criado e com status consultado

Pré-requisitos


  • Docker e Docker Compose
  • Make
  • Go (apenas para desenvolvimento — a versão do toolchain está declarada no go.mod do repositório)

Configurar e rodar


1

Clone o repositório

git clone https://github.com/LerianStudio/fetcher.git
cd fetcher
2

Configure os arquivos de ambiente

make set-env
Isso cria os arquivos .env de cada componente a partir dos templates .env.example.
3

Gere a chave-mestra de criptografia

make generate-master-key
Copie a chave gerada e defina-a como APP_ENC_KEY em ambos components/manager/.env e components/worker/.env. Essa chave é obrigatória — os serviços não iniciam sem ela, e os dois devem usar o mesmo valor: o Worker precisa dela para descriptografar credenciais de conexão e verificar assinaturas de mensagens.
4

Suba todos os serviços

make up
5

Verifique se a API está no ar

  • API REST: http://localhost:4006
  • Swagger UI: http://localhost:4006/swagger/index.html
  • Gerenciamento do RabbitMQ: http://localhost:3008

Execute sua primeira extração


Uma extração tem três movimentos: registrar uma conexão, criar um job e consultar o job até ele terminar.

1. Registre uma conexão de banco de dados

curl -X POST http://localhost:4006/v1/management/connections \
  -H "Content-Type: application/json" \
  -d '{
    "configName": "meu_postgres",
    "type": "POSTGRESQL",
    "host": "host.docker.internal",
    "port": 5432,
    "databaseName": "meudb",
    "userName": "postgres",
    "password": "postgres"
  }'
A senha é criptografada antes de ser armazenada. Teste a conexão antes de usá-la:
curl -X POST http://localhost:4006/v1/management/connections/{id}/test

2. Crie um job de extração

Diga ao Fetcher quais campos extrair, de quais tabelas, por datasource:
curl -X POST http://localhost:4006/v1/fetcher \
  -H "Content-Type: application/json" \
  -d '{
    "dataRequest": {
      "mappedFields": {
        "meu_postgres": {
          "accounts": ["id", "email", "created_at"]
        }
      }
    },
    "metadata": {
      "source": "quickstart"
    }
  }'
A API responde 202 Accepted com o ID do job. Se um job idêntico foi submetido nos últimos 5 minutos, o Fetcher detecta a duplicata e retorna o job existente com 200 OK em vez de criar um novo.

3. Consulte o status do job

curl http://localhost:4006/v1/fetcher/{id}
Um job passa por pendingprocessingcompleted (ou failed). Na conclusão, o Worker já criptografou os resultados no object storage e publicou um evento job.completed.
Quando a autenticação está habilitada (PLUGIN_AUTH_ENABLED=true), as requisições também carregam um header Authorization: Bearer <token>. O quickstart local roda com autenticação desabilitada.

Próximos passos


Conceitos centrais

Entenda conexões, descoberta de esquemas, jobs, filtros e resultados.

Configuração

As variáveis de ambiente que moldam uma implantação do Fetcher.