UNPKG

@ezgdev/nest-ioredis

Version:
44 lines (43 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRedisConnection = exports.getRedisConnectionToken = exports.getRedisOptionsToken = void 0; const ioredis_1 = require("ioredis"); const redis_constants_1 = require("./redis.constants"); function getRedisOptionsToken(connection) { return `${connection || redis_constants_1.REDIS_MODULE_CONNECTION}_${redis_constants_1.REDIS_MODULE_OPTIONS_TOKEN}`; } exports.getRedisOptionsToken = getRedisOptionsToken; function getRedisConnectionToken(connection) { return `${connection || redis_constants_1.REDIS_MODULE_CONNECTION}_${redis_constants_1.REDIS_MODULE_CONNECTION_TOKEN}`; } exports.getRedisConnectionToken = getRedisConnectionToken; function createRedisConnection(options) { const { type, options: commonOptions = {} } = options; switch (type) { case 'cluster': { const client = new ioredis_1.default.Cluster(options.nodes, commonOptions); bindEventLisener(client, options.onConnectionReady, options.onConnectionError); return client; } case 'single': { const { url, options: { port, host } = {} } = options; const connectionOptions = Object.assign(Object.assign({}, commonOptions), { port, host }); const client = url ? new ioredis_1.default(url, connectionOptions) : new ioredis_1.default(connectionOptions); bindEventLisener(client, options.onConnectionReady, options.onConnectionError); return client; } default: throw new Error('Invalid configuration'); } } exports.createRedisConnection = createRedisConnection; function bindEventLisener(client, onReady, onError) { client.on('ready', () => { if (onReady) onReady(); }); client.on('error', (e) => { if (onError) onError(e); }); }