UNPKG

@songkeys/nestjs-redis

Version:

Redis(ioredis) module for Nest framework (node.js).

83 lines (82 loc) 3.3 kB
"use strict"; var RedisModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.RedisModule = void 0; const tslib_1 = require("tslib"); const common_1 = require("@nestjs/common"); const core_1 = require("@nestjs/core"); const redis_manager_1 = require("./redis-manager"); const redis_providers_1 = require("./redis.providers"); const redis_constants_1 = require("./redis.constants"); const common_2 = require("./common"); const utils_1 = require("../utils"); const redis_logger_1 = require("./redis-logger"); const errors_1 = require("../errors"); const messages_1 = require("../messages"); /** * @public */ let RedisModule = exports.RedisModule = RedisModule_1 = class RedisModule { constructor(moduleRef) { this.moduleRef = moduleRef; } /** * Registers the module synchronously. */ static forRoot(options = {}, isGlobal = true) { const redisClientProviders = (0, redis_providers_1.createRedisClientProviders)(); const providers = [ (0, redis_providers_1.createOptionsProvider)(options), redis_providers_1.redisClientsProvider, redis_providers_1.mergedOptionsProvider, redis_manager_1.RedisManager, ...redisClientProviders ]; return { global: isGlobal, module: RedisModule_1, providers, exports: [redis_manager_1.RedisManager, ...redisClientProviders] }; } /** * Registers the module asynchronously. */ static forRootAsync(options, isGlobal = true) { var _a; if (!options.useFactory && !options.useClass && !options.useExisting) { throw new errors_1.MissingConfigurationsError(); } const redisClientProviders = (0, redis_providers_1.createRedisClientProviders)(); const providers = [ ...(0, redis_providers_1.createAsyncProviders)(options), redis_providers_1.redisClientsProvider, redis_providers_1.mergedOptionsProvider, redis_manager_1.RedisManager, ...redisClientProviders, ...((_a = options.extraProviders) !== null && _a !== void 0 ? _a : []) ]; return { global: isGlobal, module: RedisModule_1, imports: options.imports, providers, exports: [redis_manager_1.RedisManager, ...redisClientProviders] }; } async onApplicationShutdown() { const { closeClient } = this.moduleRef.get(redis_constants_1.REDIS_MERGED_OPTIONS); if (closeClient) { const results = await (0, common_2.destroy)(this.moduleRef.get(redis_constants_1.REDIS_CLIENTS)); results.forEach(([namespace, quit]) => { if ((0, utils_1.isResolution)(namespace) && (0, utils_1.isRejection)(quit) && (0, utils_1.isError)(quit.reason)) { redis_logger_1.logger.error((0, messages_1.ERROR_LOG)((0, utils_1.parseNamespace)(namespace.value), quit.reason.message), quit.reason.stack); } }); } } }; exports.RedisModule = RedisModule = RedisModule_1 = tslib_1.__decorate([ (0, common_1.Module)({}), tslib_1.__metadata("design:paramtypes", [core_1.ModuleRef]) ], RedisModule);