Source: service/QueueService.js

'use strict';

/**
 * Plain user functionality in service methods.
 * @module service/queue
 * @license MIT
 * @author Kai KRETSCHMANN <kai@kretschmann.consulting>
 */

const Queue = require('node-resque').Queue;

const log4js = require('log4js');
const logger = log4js.getLogger();
logger.level = process.env.LOGLEVEL || /* istanbul ignore next */ 'warn'; // LCOV_EXCL_LINE

const connectionDetails = {
  pkg: 'ioredis',
  host: process.env.REDIS_HOSTNAME || /* istanbul ignore next */ '127.0.0.1',
  password: null,
  port: process.env.REDIS_PORT || /* istanbul ignore next */ 6379,
  database: 0
};

/**
 * List queues.
 * @method listQueues
 * @public
 * @returns {Promise} array of entries or error
 **/
exports.listQueues = function () {
  return new Promise(function (resolve, reject) {
    logger.debug('In list service');
    const q = new Queue({ connection: connectionDetails });
    q.on('error', function (error) {
      logger.error(error);
    });
    q.connect().then(_c => {
      q.queues()
        .then(async (item) => {
          const r = [];
          for (const value of item) {
            const l = await q.length(value);
            r.push({ id: value, count: l });
          }
          resolve(r);
        })
        .catch(err => {
          logger.error(`Not OK: ${err}`);
          reject(err);
        });
    });
  });
};