@nestjs-labs/nestjs-redis
Version:
Redis(node-redis) module for Nest framework (node.js).
72 lines (71 loc) • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAsyncOptionsProvider = exports.createAsyncProviders = exports.createRedisClient = exports.InjectRedis = void 0;
const common_1 = require("@nestjs/common");
const redis_1 = require("redis");
const redis_constants_1 = require("./redis.constants");
const redis_module_definition_1 = require("./redis.module-definition");
/**
* Inject the Redis client.
* @returns The Redis client.
*/
const InjectRedis = () => (0, common_1.Inject)(redis_constants_1.REDIS_CLIENT);
exports.InjectRedis = InjectRedis;
/**
* Create a Redis client.
* @returns The Redis client.
*/
const createRedisClient = () => ({
inject: [redis_module_definition_1.MODULE_OPTIONS_TOKEN],
provide: redis_constants_1.REDIS_CLIENT,
useFactory: async (options) => {
if (options.cluster) {
const cluster = (0, redis_1.createCluster)(options.cluster);
await cluster.connect();
return cluster;
}
const client = (0, redis_1.createClient)(options);
await client.connect();
return client;
}
});
exports.createRedisClient = createRedisClient;
const createAsyncProviders = (options) => {
if (options.useClass) {
return [
{
provide: options.useClass,
useClass: options.useClass
},
(0, exports.createAsyncOptionsProvider)(options)
];
}
if (options.useExisting || options.useFactory)
return [(0, exports.createAsyncOptionsProvider)(options)];
return [];
};
exports.createAsyncProviders = createAsyncProviders;
const createAsyncOptionsProvider = (options) => {
if (options.useFactory) {
return {
inject: options.inject ?? [],
provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN,
useFactory: options.useFactory
};
}
const inject = [];
if (options.useClass) {
inject.push(options.useClass);
}
else if (options.useExisting) {
inject.push(options.useExisting);
}
return {
inject,
provide: redis_module_definition_1.MODULE_OPTIONS_TOKEN,
useFactory: async (optionsFactory) => {
return await optionsFactory.createRedisOptions();
}
};
};
exports.createAsyncOptionsProvider = createAsyncOptionsProvider;