'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);
});
});
});
};