69 lines
1.5 KiB
JavaScript
69 lines
1.5 KiB
JavaScript
// 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();
|