refactoring redis for multiple value classes
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Timo Hocker 2022-08-13 17:18:09 +02:00
parent 43cf782511
commit d5c136790e
Signed by: Timo
GPG Key ID: DFAC2CF4E1D1BEC9

View File

@ -11,6 +11,9 @@ import { LabelledKey } from './Key';
const logger = debug ('redis');
export type SyncClass = 'blacklist' | 'keystore'
export type SyncValue = LabelledKey | string;
export class Redis {
private _redis: IORedis | null = null;
@ -52,20 +55,31 @@ export class Redis {
log ('done');
}
public async set_key (key: LabelledKey): Promise<void> {
const log = logger.extend ('set_key');
log ('trying to set key %s to redis', key.index);
public async set (
sync_class: SyncClass,
key: string,
value: SyncValue
): Promise<void> {
const log = logger.extend ('set');
log ('trying to set %s value %s to redis', sync_class, key);
if (this._redis === null) {
log ('redis is inactive, skipping');
return;
}
const valid_for = Math.floor (
(key.valid_until - (new Date)
.getTime ()) / 1000
);
log ('key is valid for %d seconds', valid_for);
await this._redis.setex (key.index, valid_for, JSON.stringify (key));
log ('saved key');
let valid_for = null;
if (sync_class === 'keystore') {
valid_for = Math.floor (
(key.valid_until - (new Date)
.getTime ()) / 1000
);
log ('key is valid for %d seconds', valid_for);
}
if (valid_for === null)
await this._redis.set (key, JSON.stringify (value));
else
await this._redis.setex (key, valid_for, JSON.stringify (value));
log ('saved value');
}
public async get_key (index: string): Promise<LabelledKey | null> {