All files / crons/jobs pendingQueues.js

0% Statements 0/29
0% Branches 0/13
0% Functions 0/3
0% Lines 0/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                                                                                                         
/* eslint-disable no-restricted-syntax */
require('babel-register');
require('babel-polyfill');
const { parentPort } = require('worker_threads');
const { Op } = require('sequelize');
const moment = require('moment-timezone');
const databaseConnect = require('../../../config/database');
const { default: Totvs } = require('../../services/totvs');
 
// ########################################################
// JOB EXECUTADO PARA REENVIAR FILA INTEGRAÇÃO COM ERRO
// ########################################################
 
// Funcao de envio de mensagem utilizada para logging
function sendMessage(message = '') {
  if (parentPort) parentPort.postMessage(message);
}
 
const jobExec = async () => {
  sendMessage('Database connecting...');
  const models = await databaseConnect.default();
 
  const pendingQueues = await models.IntegrationQueue.findAll({
    where: {
      status: { [Op.ne]: 200 },
    },
  });
 
  if (pendingQueues && pendingQueues.length > 0) {
    for (const queue of pendingQueues) {
      if (queue.status === 999) {
        const today = moment().format();
        const diff = moment(today).diff(queue.createdAt, 'minutes');
 
        if (diff > 15) await Totvs.resyncQueue(queue, queue.createdUser);
      } else await Totvs.resyncQueue(queue, queue.createdUser);
    }
  } else {
    sendMessage('Nenhuma fila com erro!');
  }
  sendMessage('Finished!');
};
 
(async () => {
  sendMessage('jobExec');
  // funcao que executa o job
  await jobExec();
 
  // processo necessario para informar a conclusao do job
  if (parentPort) sendMessage('done');
  else process.exit(0);
})();