UNPKG

@nest-js/cache-strategies

Version:
76 lines 3.53 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheModule = void 0; const common_1 = require("@nestjs/common"); const cache_manager_1 = require("@nestjs/cache-manager"); const config_1 = require("@nestjs/config"); const cache_manager_redis_store_1 = require("cache-manager-redis-store"); const cacheable_1 = require("cacheable"); const core_1 = require("@nestjs/core"); const cache_service_1 = require("./cache.service"); const loggerProvider = { provide: common_1.Logger, useFactory: (configService) => { var _a, _b; const level = configService.getOrThrow('LOGGER_LEVEL', 'log'); const logger = new common_1.Logger(); (_b = (_a = logger.localInstance).setLogLevels) === null || _b === void 0 ? void 0 : _b.call(_a, [level]); return logger; }, inject: [config_1.ConfigService], }; let CacheModule = class CacheModule { }; exports.CacheModule = CacheModule; exports.CacheModule = CacheModule = __decorate([ (0, common_1.Global)(), (0, common_1.Module)({ imports: [ config_1.ConfigModule.forRoot(), cache_manager_1.CacheModule.registerAsync({ imports: [config_1.ConfigModule], provideInjectionTokensFrom: [loggerProvider], useFactory: async (configService, logger) => { const ttl = parseInt(configService.getOrThrow('CACHE_TTL', '60')); const max = parseInt(configService.getOrThrow('CACHE_MAX_ITEMS', '999999')); try { const store = await (0, cache_manager_redis_store_1.redisStore)({ url: `redis://${configService.getOrThrow('REDIS_HOST')}:${configService.getOrThrow('REDIS_PORT')}`, ttl: ttl * 1000, }); logger.log('Successfully connected to Redis cache'); return { store, ttl, max }; } catch (error) { logger.warn('Failed to connect to Redis, falling back to memory cache: ' + error.message); return { store: new cacheable_1.CacheableMemory({ ttl: ttl * 1000, lruSize: max }), ttl, max, }; } }, isGlobal: true, inject: [config_1.ConfigService, common_1.Logger], }), ], controllers: [], providers: [ cache_service_1.CacheService, loggerProvider, { provide: core_1.APP_INTERCEPTOR, useClass: cache_manager_1.CacheInterceptor, }, ], exports: [cache_service_1.CacheService], }) ], CacheModule); //# sourceMappingURL=cache.module.js.map