// services/cacheService.js // Service pour gérer la mise en cache des données class CacheService { constructor() { this.cache = {}; this.defaultTTL = 5 * 60 * 1000; // 5 minutes en millisecondes } /** * Récupère une entrée en cache * @param {string} key - La clé de l'entrée * @returns {Object|null} - L'entrée ou null si non trouvée ou expirée */ get(key) { const item = this.cache[key]; if (!item) return null; // Vérifier si l'entrée est expirée if (Date.now() > item.expiry) { // Suppression automatique des entrées expirées delete this.cache[key]; return null; } return item.value; } /** * Ajoute une entrée dans le cache * @param {string} key - La clé de l'entrée * @param {any} value - La valeur à stocker * @param {number} ttl - Durée de vie en millisecondes (par défaut: 5 minutes) */ set(key, value, ttl = this.defaultTTL) { this.cache[key] = { value, expiry: Date.now() + ttl }; } /** * Vérifie si une entrée existe et est valide * @param {string} key - La clé de l'entrée * @returns {boolean} - Vrai si l'entrée existe et n'est pas expirée */ has(key) { return this.get(key) !== null; } /** * Supprime une entrée du cache * @param {string} key - La clé de l'entrée */ invalidate(key) { delete this.cache[key]; } /** * Vide tout le cache */ clear() { this.cache = {}; } } // Export d'une instance singleton export default new CacheService();