Files
svelte-cache/src/lib/server/cache.ts

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;