Saltar al contenido principal
Esta guía te lleva de un checkout limpio a un entorno Fetcher en ejecución y un job de extracción completado. Todo corre localmente con Docker Compose. Al final tendrás:
  • Manager, Worker y su infraestructura corriendo localmente
  • Una conexión de base de datos registrada y probada
  • Un job de extracción creado y con su estado consultado

Prerrequisitos


  • Docker y Docker Compose
  • Make
  • Go (solo para desarrollo — la versión del toolchain está declarada en el go.mod del repositorio)

Configura y ejecuta


1

Clona el repositorio

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

Configura los archivos de entorno

make set-env
Esto crea los archivos .env de cada componente a partir de sus plantillas .env.example.
3

Genera la clave maestra de cifrado

make generate-master-key
Copia la clave generada y defínela como APP_ENC_KEY en ambos components/manager/.env y components/worker/.env. Esta clave es obligatoria — los servicios no arrancan sin ella, y los dos deben usar el mismo valor: el Worker la necesita para descifrar credenciales de conexión y verificar firmas de mensajes.
4

Levanta todos los servicios

make up
5

Verifica que la API está arriba

  • API REST: http://localhost:4006
  • Swagger UI: http://localhost:4006/swagger/index.html
  • Gestión de RabbitMQ: http://localhost:3008

Ejecuta tu primera extracción


Una extracción tiene tres movimientos: registrar una conexión, crear un job y consultar el job hasta que termine.

1. Registra una conexión de base de datos

curl -X POST http://localhost:4006/v1/management/connections \
  -H "Content-Type: application/json" \
  -d '{
    "configName": "mi_postgres",
    "type": "POSTGRESQL",
    "host": "host.docker.internal",
    "port": 5432,
    "databaseName": "midb",
    "userName": "postgres",
    "password": "postgres"
  }'
La contraseña se cifra antes de almacenarse. Prueba la conexión antes de usarla:
curl -X POST http://localhost:4006/v1/management/connections/{id}/test

2. Crea un job de extracción

Dile a Fetcher qué campos extraer, de qué tablas, por datasource:
curl -X POST http://localhost:4006/v1/fetcher \
  -H "Content-Type: application/json" \
  -d '{
    "dataRequest": {
      "mappedFields": {
        "mi_postgres": {
          "accounts": ["id", "email", "created_at"]
        }
      }
    },
    "metadata": {
      "source": "quickstart"
    }
  }'
La API responde 202 Accepted con el ID del job. Si un job idéntico se envió en los últimos 5 minutos, Fetcher detecta el duplicado y devuelve el job existente con 200 OK en lugar de crear uno nuevo.

3. Consulta el estado del job

curl http://localhost:4006/v1/fetcher/{id}
Un job pasa por pendingprocessingcompleted (o failed). Al completarse, el Worker ya cifró los resultados en el object storage y publicó un evento job.completed.
Cuando la autenticación está habilitada (PLUGIN_AUTH_ENABLED=true), las peticiones también llevan un header Authorization: Bearer <token>. El quickstart local corre con la autenticación deshabilitada.

Próximos pasos


Conceptos centrales

Entiende conexiones, descubrimiento de esquemas, jobs, filtros y resultados.

Configuración

Las variables de entorno que dan forma a un despliegue de Fetcher.