fluid-func
Version:
A way to write your code with functional programming in mind.
36 lines (32 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cache = cache;
var _storage = require('../storage/');
function cache(stackId, chainId, param, cachedLast, action) {
var paramJSON = {};
var result = void 0;
for (var field in param) {
if (param.hasOwnProperty(field) && field !== '$chainId') {
if (param[field]) {
paramJSON[field] = param[field]();
}
}
}
if ((0, _storage.hasCached)(stackId, chainId, paramJSON)) {
var cachedAction = (0, _storage.getCachedChainAction)(stackId, chainId, paramJSON);
var currentTime = new Date().getTime();
var cachedTimeLast = currentTime - cachedAction.timestamp;
if (cachedTimeLast <= cachedLast) {
result = cachedAction.result;
} else {
(0, _storage.clearCache)(stackId, chainId);
}
}
if (!result) {
result = action(param);
(0, _storage.cacheChainAction)(stackId, chainId, paramJSON, result);
}
return result;
}