summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc
diff options
context:
space:
mode:
authorHazel K <acomputerdog@gmail.com>2024-08-03 13:54:59 -0400
committerHazel K <acomputerdog@gmail.com>2024-08-03 13:54:59 -0400
commitb1f1e3eb0e9a809839d2ee2ccf71d64c47dc7efa (patch)
tree1fff8f9957ad8e7c7788e0c2ad3f88647fe6dfe0 /packages/backend/src/misc
parentremove infinity caches (diff)
downloadsharkey-b1f1e3eb0e9a809839d2ee2ccf71d64c47dc7efa.tar.gz
sharkey-b1f1e3eb0e9a809839d2ee2ccf71d64c47dc7efa.tar.bz2
sharkey-b1f1e3eb0e9a809839d2ee2ccf71d64c47dc7efa.zip
encapsulate other caches
Diffstat (limited to 'packages/backend/src/misc')
-rw-r--r--packages/backend/src/misc/cache.ts71
1 files changed, 35 insertions, 36 deletions
diff --git a/packages/backend/src/misc/cache.ts b/packages/backend/src/misc/cache.ts
index fe27d44692..b6eca73b03 100644
--- a/packages/backend/src/misc/cache.ts
+++ b/packages/backend/src/misc/cache.ts
@@ -7,23 +7,23 @@ import * as Redis from 'ioredis';
import { bindThis } from '@/decorators.js';
export class RedisKVCache<T> {
- private redisClient: Redis.Redis;
- private name: string;
- private lifetime: number;
- private memoryCache: MemoryKVCache<T>;
- private fetcher: (key: string) => Promise<T>;
- private toRedisConverter: (value: T) => string;
- private fromRedisConverter: (value: string) => T | undefined;
+ private readonly lifetime: number;
+ private readonly memoryCache: MemoryKVCache<T>;
+ private readonly fetcher: (key: string) => Promise<T>;
+ private readonly toRedisConverter: (value: T) => string;
+ private readonly fromRedisConverter: (value: string) => T | undefined;
- constructor(redisClient: RedisKVCache<T>['redisClient'], name: RedisKVCache<T>['name'], opts: {
- lifetime: RedisKVCache<T>['lifetime'];
- memoryCacheLifetime: number;
- fetcher: RedisKVCache<T>['fetcher'];
- toRedisConverter: RedisKVCache<T>['toRedisConverter'];
- fromRedisConverter: RedisKVCache<T>['fromRedisConverter'];
- }) {
- this.redisClient = redisClient;
- this.name = name;
+ constructor(
+ private redisClient: Redis.Redis,
+ private name: string,
+ opts: {
+ lifetime: RedisKVCache<T>['lifetime'];
+ memoryCacheLifetime: number;
+ fetcher: RedisKVCache<T>['fetcher'];
+ toRedisConverter: RedisKVCache<T>['toRedisConverter'];
+ fromRedisConverter: RedisKVCache<T>['fromRedisConverter'];
+ },
+ ) {
this.lifetime = opts.lifetime;
this.memoryCache = new MemoryKVCache(opts.memoryCacheLifetime);
this.fetcher = opts.fetcher;
@@ -101,23 +101,23 @@ export class RedisKVCache<T> {
}
export class RedisSingleCache<T> {
- private redisClient: Redis.Redis;
- private name: string;
- private lifetime: number;
- private memoryCache: MemorySingleCache<T>;
- private fetcher: () => Promise<T>;
- private toRedisConverter: (value: T) => string;
- private fromRedisConverter: (value: string) => T | undefined;
+ private readonly lifetime: number;
+ private readonly memoryCache: MemorySingleCache<T>;
+ private readonly fetcher: () => Promise<T>;
+ private readonly toRedisConverter: (value: T) => string;
+ private readonly fromRedisConverter: (value: string) => T | undefined;
- constructor(redisClient: RedisSingleCache<T>['redisClient'], name: RedisSingleCache<T>['name'], opts: {
- lifetime: RedisSingleCache<T>['lifetime'];
- memoryCacheLifetime: number;
- fetcher: RedisSingleCache<T>['fetcher'];
- toRedisConverter: RedisSingleCache<T>['toRedisConverter'];
- fromRedisConverter: RedisSingleCache<T>['fromRedisConverter'];
- }) {
- this.redisClient = redisClient;
- this.name = name;
+ constructor(
+ private redisClient: Redis.Redis,
+ private name: string,
+ opts: {
+ lifetime: number;
+ memoryCacheLifetime: number;
+ fetcher: RedisSingleCache<T>['fetcher'];
+ toRedisConverter: RedisSingleCache<T>['toRedisConverter'];
+ fromRedisConverter: RedisSingleCache<T>['fromRedisConverter'];
+ },
+ ) {
this.lifetime = opts.lifetime;
this.memoryCache = new MemorySingleCache(opts.memoryCacheLifetime);
this.fetcher = opts.fetcher;
@@ -297,11 +297,10 @@ export class MemoryKVCache<T> {
export class MemorySingleCache<T> {
private cachedAt: number | null = null;
private value: T | undefined;
- private lifetime: number;
- constructor(lifetime: MemorySingleCache<never>['lifetime']) {
- this.lifetime = lifetime;
- }
+ constructor(
+ private lifetime: number,
+ ) {}
@bindThis
public set(value: T): void {