import { Inject, Injectable, Logger } from '@nestjs/common'; import { Cacheable } from 'cacheable'; @Injectable() export class CacheService { private readonly logger = new Logger(CacheService.name); constructor(@Inject('CACHE_INSTANCE') private readonly cache: Cacheable) {} get(key: string): Promise { this.logger.log(`Getting value for key ${key}`); return this.cache.get(key); } async set(key: string, value: T, ttl?: number | string): Promise { this.logger.log(`Setting value for key ${key}`); await this.cache.set(key, value, ttl); } async delete(key: string): Promise { this.logger.log(`Deleting value for key ${key}`); await this.cache.delete(key); } }