UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

37 lines 1.73 kB
import { EQueueOperationalState, EQueueProperty, } from '../../queue-manager/index.js'; import { ESystemStateTransitionReason, } from '../types/index.js'; import { redisKeys } from '../../common/redis/redis-keys/redis-keys.js'; import { _createQueueStateTransition } from './_create-queue-state-transition.js'; import { ERedisScriptName } from '../../common/redis/scripts.js'; import { QueueNotFoundError } from '../../errors/index.js'; export function _getQueueState(client, queueParams, cb) { const { keyQueueProperties } = redisKeys.getQueueKeys(queueParams.ns, queueParams.name, null); client.runScript(ERedisScriptName.GET_QUEUE_STATE, [keyQueueProperties], [EQueueProperty.OPERATIONAL_STATE], (err, reply) => { if (err) return cb(err); if (reply === 'QUEUE_NOT_FOUND') { return cb(new QueueNotFoundError({ metadata: { queue: queueParams, }, })); } const currentState = reply ? Number(reply) : EQueueOperationalState.ACTIVE; const { keyQueueStateHistory } = redisKeys.getQueueKeys(queueParams.ns, queueParams.name, null); client.lindex(keyQueueStateHistory, 0, (err, latestTransition) => { if (err) return cb(err); let transition; if (latestTransition) { transition = JSON.parse(latestTransition); } else { transition = _createQueueStateTransition(EQueueOperationalState.ACTIVE, currentState, ESystemStateTransitionReason.SYSTEM_INIT); } cb(null, transition); }); }); } //# sourceMappingURL=_get-queue-state.js.map