UNPKG

redis-smq

Version:

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

36 lines 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._saveExchange = _saveExchange; const redis_smq_common_1 = require("redis-smq-common"); const redis_keys_js_1 = require("../../common/redis/redis-keys/redis-keys.js"); const index_js_1 = require("../types/index.js"); const index_js_2 = require("../../errors/index.js"); function _saveExchange(client, exchangeParams, exchangeQueuePolicy, cb) { const { keyExchanges } = redis_keys_js_1.redisKeys.getMainKeys(); const { keyNamespaceExchanges } = redis_keys_js_1.redisKeys.getNamespaceKeys(exchangeParams.ns); const { keyExchange } = redis_keys_js_1.redisKeys.getExchangeKeys(exchangeParams.ns, exchangeParams.name); (0, redis_smq_common_1.withWatchTransaction)(client, (client, watch, done) => { redis_smq_common_1.async.waterfall([ (cb1) => watch([keyExchange, keyExchanges, keyNamespaceExchanges], cb1), (_, cb1) => client.hget(keyExchange, String(index_js_1.EExchangeProperty.TYPE), (err, reply) => { if (err) return cb1(err); if (reply) return cb1(new index_js_2.ExchangeAlreadyExistsError()); cb1(); }), (_, cb1) => { const typeField = String(index_js_1.EExchangeProperty.TYPE); const queuePolicyField = String(index_js_1.EExchangeProperty.QUEUE_POLICY); const exchangeStr = JSON.stringify(exchangeParams); const multi = client.multi(); multi.hset(keyExchange, typeField, exchangeParams.type); multi.hset(keyExchange, queuePolicyField, Number(exchangeQueuePolicy)); multi.sadd(keyExchanges, exchangeStr); multi.sadd(keyNamespaceExchanges, exchangeStr); cb1(null, { multi }); }, ], done); }, (err) => cb(err)); } //# sourceMappingURL=_save-exchange.js.map