UNPKG

kentico-kontent-nuxt-module

Version:
51 lines (50 loc) 1.56 kB
export class CacheService { constructor(client) { this.cacheEntries = []; this.deliveryClient = client; } viaCache(query, seconds, cacheKey, isServerProcess) { if (this.cacheEntries && query && isServerProcess) { return query.toPromise(); } ; if (!seconds) { seconds = 30; } if (query && !process.server) { const key = cacheKey && cacheKey !== "" ? cacheKey : query.getUrl(); const cacheEntry = getCacheEntry(this.cacheEntries, key); if (cacheEntry && getDiffInSeconds(new Date(), cacheEntry.timestamp) < seconds) { return new Promise((resolve, reject) => { console.log("viaCache: response taken from cache"); resolve(cacheEntry.object); }); } else { return query.toPromise().then((response) => { console.log("viaCache: response taken from server"); if (cacheEntry) { cacheEntry.timestamp = new Date(); } else { this.cacheEntries.push({ key, object: response, seconds, timestamp: new Date() }); } return response; }); } } return new Promise((resolve, reject) => { resolve(null); }); } } function getCacheEntry(cacheEntries, key) { if (cacheEntries) { return cacheEntries.find((s) => s.key === key); } return null; } function getDiffInSeconds(t1, t2) { const dif = t1.getTime() - t2.getTime(); const secondsFromT1ToT2 = dif / 1e3; const secondsBetweenDates = Math.abs(secondsFromT1ToT2); return secondsBetweenDates; }