Files
2025-05-14 11:26:52 +02:00

37 lines
772 B
JavaScript

const sdk = require("@defillama/sdk");
let cache = {};
function setCallCache(_cache) {
cache = _cache;
}
async function cachedCalls({ items, multiCall, key }) {
if (!cache[key]) cache[key] = {};
const res = [];
const missingIds = [];
const missingIndices = [];
items.forEach((id, i) => {
if (cache[key][id]) res[i] = cache[key][id];
else {
missingIds.push(id);
missingIndices.push(i);
}
});
if (missingIds.length) {
sdk.log("Missing ids", missingIds.length, "key", key);
const tempRes = await multiCall(missingIds);
missingIds.forEach((id, i) => {
res[missingIndices[i]] = tempRes[i];
cache[key][id] = tempRes[i];
});
}
return res;
}
module.exports = {
setCallCache,
cachedCalls,
cache,
};