1
0
mirror of https://github.com/toast-ts/Daggerbot-TS.git synced 2024-11-18 04:40:59 -05:00
Daggerbot-TS/src/components/CacheServer.ts

45 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-12-24 10:21:40 -05:00
import {createClient, ErrorReply} from 'redis';
import Logger from '../helpers/Logger.js';
import TSClient from '../helpers/TSClient.js';
const RedisClient = createClient({
url: (await TSClient()).redis_uri,
database: 0,
name: 'Daggerbot',
socket: { keepAlive: 15000, timeout: 30000, reconnectStrategy(retries:number = 5) {return Math.min(retries * 76, 1000)} }
2023-12-24 10:21:40 -05:00
});
export default class CacheServer {
2023-12-26 17:46:08 -05:00
protected static prefix = 'Cache';
2023-12-24 10:21:40 -05:00
protected static eventManager() {
RedisClient
2023-12-26 17:46:08 -05:00
.on('connect', ()=>Logger.console('log', this.prefix, 'Connection to Redis has been established'))
.on('error', (err:ErrorReply)=>Logger.console('error', this.prefix, `Encountered an error in Redis: ${err.message}`))
2023-12-24 10:21:40 -05:00
}
2023-12-26 17:46:08 -05:00
public static async get(key:any, jsonMode:boolean):Promise<any> {
let cachedResult:any;
if (jsonMode) cachedResult = await RedisClient.json.get(key);
else {
cachedResult = await RedisClient.get(key);
if (cachedResult) cachedResult = JSON.parse(cachedResult);
}
return cachedResult;
2023-12-24 10:21:40 -05:00
}
2023-12-26 17:46:08 -05:00
public static async set(key:any, value:any, jsonMode:boolean):Promise<any> {
if (jsonMode) return await RedisClient.json.set(key, '.', value);
else return await RedisClient.set(key, JSON.stringify(value));
2023-12-24 10:21:40 -05:00
}
2024-03-15 06:02:30 -04:00
/** @param time Cache expiration in seconds */
2024-01-16 06:41:30 -05:00
public static expiry = async(key:any, time:number)=>await RedisClient.expire(key, time); // NOTE: time is in seconds, not milliseconds -- you know what you did wrong
public static delete = async(key:any)=>await RedisClient.del(key);
2023-12-24 10:21:40 -05:00
public static init() {
try {
RedisClient.connect();
this.eventManager();
} catch {
2023-12-26 17:46:08 -05:00
console.error('Cannot initialize RedisClient -- is Redis running?');
process.exit(1);
2023-12-24 10:21:40 -05:00
}
}
}