36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import cache from './redis.js';
|
|
import type { RedisValue } from './redis.js';
|
|
|
|
interface CacheFacade {
|
|
ready(): Promise<boolean>;
|
|
put<T extends RedisValue>(key: string, value: T, ttl?: number): Promise<boolean>;
|
|
get<T extends RedisValue = RedisValue>(key: string, defaultValue?: T | null): Promise<T | null>;
|
|
has(key: string): Promise<boolean>;
|
|
forget(key: string): Promise<boolean>;
|
|
flush(): Promise<boolean>;
|
|
forever<T extends RedisValue>(key: string, value: T): Promise<boolean>;
|
|
remember<T extends RedisValue>(
|
|
key: string,
|
|
ttl: number,
|
|
callback: () => Promise<T> | T
|
|
): Promise<T>;
|
|
rememberForever<T extends RedisValue>(key: string, callback: () => Promise<T> | T): Promise<T>;
|
|
}
|
|
|
|
const Cache: CacheFacade = {
|
|
ready: () => cache.ready(),
|
|
put: <T extends RedisValue>(key: string, value: T, ttl?: number) => cache.put(key, value, ttl),
|
|
get: <T extends RedisValue = RedisValue>(key: string, defaultValue?: T | null) =>
|
|
cache.get<T>(key, defaultValue),
|
|
has: (key: string) => cache.has(key),
|
|
forget: (key: string) => cache.forget(key),
|
|
flush: () => cache.flush(),
|
|
forever: <T extends RedisValue>(key: string, value: T) => cache.forever(key, value),
|
|
remember: <T extends RedisValue>(key: string, ttl: number, callback: () => Promise<T> | T) =>
|
|
cache.remember(key, ttl, callback),
|
|
rememberForever: <T extends RedisValue>(key: string, callback: () => Promise<T> | T) =>
|
|
cache.rememberForever(key, callback)
|
|
};
|
|
|
|
export default Cache;
|