Files
drop/server/internal/cache/cacheHandler.ts
2025-05-07 22:26:34 -04:00

34 lines
823 B
TypeScript

import { prefixStorage, type StorageValue, type Storage } from "unstorage";
export interface CacheProviderOptions {
/**
* Max number of items in the cache
*/
max?: number;
/**
* Time to live (in ms)
*/
ttl?: number;
}
/**
* Creates and manages the lifecycles of various caches
*/
export class CacheHandler {
private caches = new Map<string, Storage<StorageValue>>();
/**
* Create a new cache
* @param name
* @returns
*/
createCache<V extends StorageValue>(name: string) {
// will allow us to dynamicing use redis in the future just by changing the storage used
const provider = prefixStorage<V>(useStorage<V>("appCache"), name);
// hack to let ts have us store cache
this.caches.set(name, provider as unknown as Storage<StorageValue>);
return provider;
}
}