nestjs-resilience
Version:
A module for improving the reliability and fault-tolerance of your NestJS applications
21 lines (20 loc) • 949 B
JavaScript
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;
;