| #!/usr/bin/env node |
| |
| require('module-alias/register') |
| const axios = require('axios') |
| const _has = require('lodash/has') |
| |
| const dbConnector = require('@mongo/connection') |
| const { collection } = require('../plugins') |
| const consumer = require('../queue/consumer') |
| const config = require('@config/resolveConfig').lake || {} |
| |
| const queue = 'collection' |
| |
| const jobHandler = async (job) => { |
| console.log('INFO: Collection worker received job: ', job) |
| const { |
| db, client |
| } = await dbConnector.connect() |
| |
| try { |
| await Promise.all( |
| Object.keys(job) |
| .filter(key => _has(collection, key)) |
| .map(pluginName => collection[pluginName](db, job[pluginName])) |
| ) |
| await axios.post( |
| `http://localhost:${process.env.ENRICHMENT_PORT || 3000}`, |
| job, |
| { headers: { 'x-token': config.token || '' } } |
| ) |
| } catch (error) { |
| console.log('Failed to collect', error) |
| } finally { |
| dbConnector.disconnect(client) |
| } |
| } |
| |
| consumer(queue, jobHandler) |