redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
41 lines • 1.64 kB
JavaScript
import { CallbackEmptyReplyError, } from 'redis-smq-common';
import { EQueueOperationalState, } from '../../queue-manager/index.js';
import { QueueLockedError, QueueOperationForbiddenError, QueuePausedError, QueueStoppedError, } from '../../errors/index.js';
import { _checkOperation } from './_check-operation.js';
export function _validateOperation(client, queueParams, operation, cb) {
_checkOperation(client, queueParams, operation, (err, reply) => {
if (err)
return cb(err);
if (!reply)
return cb(new CallbackEmptyReplyError());
const { allowed, currentQueueState } = reply;
if (!allowed) {
if (currentQueueState === EQueueOperationalState.PAUSED) {
return cb(new QueuePausedError({
metadata: {
queue: queueParams,
},
}));
}
if (currentQueueState === EQueueOperationalState.STOPPED) {
return cb(new QueueStoppedError({
metadata: {
queue: queueParams,
},
}));
}
if (currentQueueState === EQueueOperationalState.LOCKED) {
return cb(new QueueLockedError({
metadata: {
queue: queueParams,
},
}));
}
return cb(new QueueOperationForbiddenError({
metadata: { operation, queue: queueParams },
}));
}
cb();
});
}
//# sourceMappingURL=_validate-operation.js.map