UNPKG

nestjs-resilience

Version:

A module for improving the reliability and fault-tolerance of your NestJS applications

21 lines (20 loc) 949 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheStrategy = void 0; const base_strategy_1 = require("./base.strategy"); const rxjs_1 = require("rxjs"); const resilience_states_manager_1 = require("../resilience.states-manager"); class CacheStrategy extends base_strategy_1.Strategy { constructor(options = CacheStrategy.DEFAULT_TTL) { super(options); } process(observable, command, ...args) { const statesManager = resilience_states_manager_1.ResilienceStatesManager.getInstance(); const key = [this.name, command, JSON.stringify(args)].join('/'); return (0, rxjs_1.from)(statesManager.get(key)).pipe((0, rxjs_1.switchMap)(cache => cache ? (0, rxjs_1.of)(cache) : observable.pipe((0, rxjs_1.tap)(value => statesManager.set(key, value, this.options))))); } } exports.CacheStrategy = CacheStrategy; CacheStrategy.DEFAULT_TTL = 30 * 1000;