@venix/cachified
Version:
A plug and play NestJS redis cache for intensive functions.
60 lines • 2.2 kB
JavaScript
;
// import {GetConfig} from './configure';
// import {CachifiedInstance} from './types';
//
// interface CachifiedOptions {
// transform?: (...any: any[]) => any[],
// customJoinStr?: string // - is default
// }
//
// export function Cachified(expirySeconds: number = 24 * 60 * 60, options?: CachifiedOptions): MethodDecorator { // One day expiry default
// return function(target: any, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) {
// const oldFunc = descriptor.value;
//
// descriptor.value = async function(...args: any[]) {
// args = !!options?.transform ? options.transform(...args) : args;
//
// const config = GetConfig();
//
// if (!config.enabled) return oldFunc.apply(this, args);
//
// const redisKey = `cachified:${oldFunc.name}_${args.join(options?.customJoinStr || '-')}`;
//
// const val = await getRawVal(config, redisKey);
// if (val) {
// try {
// return JSON.parse(val);
// } catch {
// return val;
// }
// }
//
// const returnedData = await oldFunc.apply(this, args);
//
// try {
// await setRawValWithExpiry(config, redisKey, JSON.stringify(returnedData), expirySeconds);
// } catch {
// await setRawValWithExpiry(config, redisKey, returnedData, expirySeconds);
// }
//
// return returnedData;
// }
// }
// }
//
// export function InvalidateCachified() {
//
// }
//
// function getRawVal(config: CachifiedInstance, key: string) {
// if (!config.client) throw new Error('Attempted Cachified usage without initialization');
//
// return config.client.get(key);
// }
//
// function setRawValWithExpiry(config: CachifiedInstance, key: string, value: any, expiry: number) {
// if (!config.client) throw new Error('Attempted Cachified usage without initialization');
//
// return config.client.set(key, value, 'EX', expiry);
// }
//# sourceMappingURL=Cachified.js.map