2024-01-08 19:41:57 +01:00
|
|
|
const { json } = require('express');
|
2022-08-29 14:05:34 +02:00
|
|
|
const { redisClient } = require('../redis');
|
2022-08-29 06:44:58 +02:00
|
|
|
const debug = require('debug')('soundbirder:cache');
|
|
|
|
|
|
|
|
function cacheResponse(request, response) {
|
|
|
|
debug("Caching response", request);
|
|
|
|
redisClient.set(request, JSON.stringify(response));
|
|
|
|
}
|
|
|
|
|
2024-01-08 19:41:57 +01:00
|
|
|
|
2022-08-29 06:44:58 +02:00
|
|
|
async function getCached(request) {
|
|
|
|
const cached = await redisClient.get(request);
|
|
|
|
if (cached) {
|
2022-08-29 10:38:42 +02:00
|
|
|
debug("Got cached response", request);
|
2022-08-29 06:44:58 +02:00
|
|
|
return JSON.parse(cached);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2024-01-08 19:41:57 +01:00
|
|
|
function push(key, value) {
|
|
|
|
redisClient.lpush(key, JSON.stringify(value));
|
|
|
|
}
|
|
|
|
|
|
|
|
async function pop(key) {
|
|
|
|
const cached = await redisClient.lpop(key);
|
|
|
|
debug("Pop cached", cached);
|
|
|
|
if (cached) {
|
|
|
|
return JSON.parse(cached);
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2022-08-29 06:44:58 +02:00
|
|
|
module.exports = {
|
|
|
|
cacheResponse,
|
2024-01-08 19:41:57 +01:00
|
|
|
getCached,
|
|
|
|
push,
|
|
|
|
pop
|
2022-08-29 06:44:58 +02:00
|
|
|
}
|