redis-smq
Version:
A simple high-performance Redis message queue for Node.js.
55 lines • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports._getQueueProperties = _getQueueProperties;
const redis_smq_common_1 = require("redis-smq-common");
const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js");
const index_js_1 = require("../errors/index.js");
const index_js_2 = require("../types/index.js");
function parseProperties(raw) {
const properties = {
deliveryModel: index_js_2.EQueueDeliveryModel.POINT_TO_POINT,
queueType: index_js_2.EQueueType.LIFO_QUEUE,
exchange: null,
rateLimit: null,
messagesCount: 0,
};
for (const key in raw) {
const keyNum = Number(key);
if (keyNum === index_js_2.EQueueProperty.QUEUE_TYPE) {
properties.queueType = Number(raw[key]);
}
else if (keyNum === index_js_2.EQueueProperty.RATE_LIMIT) {
properties.rateLimit = JSON.parse(raw[key]);
}
else if (keyNum === index_js_2.EQueueProperty.EXCHANGE) {
properties.exchange = raw[key];
}
else if (keyNum === index_js_2.EQueueProperty.MESSAGES_COUNT) {
properties.messagesCount = Number(raw[key]);
}
else if (keyNum === index_js_2.EQueueProperty.DELIVERY_MODEL) {
properties.deliveryModel = Number(raw[key]);
}
else {
return new redis_smq_common_1.PanicError(`Unsupported queue settings type [${key}]`);
}
}
return properties;
}
function _getQueueProperties(redisClient, queueParams, cb) {
const { keyQueueProperties } = redis_keys_js_1.redisKeys.getQueueKeys(queueParams, null);
redisClient.hgetall(keyQueueProperties, (err, reply) => {
if (err)
cb(err);
else if (!reply || !Object.keys(reply).length)
cb(new index_js_1.QueueQueueNotFoundError());
else {
const queueProperties = parseProperties(reply);
if (queueProperties instanceof Error)
cb(queueProperties);
else
cb(null, queueProperties);
}
});
}
//# sourceMappingURL=_get-queue-properties.js.map