@ezgdev/nest-ioredis
Version:
Nest - a ioredis module (@ioredis)
44 lines (43 loc) • 1.9 kB
JavaScript
;
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);
});
}