All files / services/scheduler-service/src/redis client.js

0% Statements 0/12
0% Branches 0/4
0% Functions 0/4
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33                                                                 
const config = require('../config');
 
let redisClient = null;
 
/**
 * Client Redis singleton du scheduler. Utilisé pour la clé de dédup d'un
 * déclenchement planifié (rejeu Temporal → pas de second job).
 * `ioredis` est chargé paresseusement : les tests unitaires peuvent mocker ce
 * module sans installer de client Redis.
 */
function getRedisClient() {
  if (!redisClient) {
    const Redis = require('ioredis');
    redisClient = new Redis({
      host: config.redis.host,
      port: config.redis.port,
      password: config.redis.password || undefined,
      retryStrategy: (times) => Math.min(times * 50, 2000),
      maxRetriesPerRequest: 3,
    });
 
    redisClient.on('error', (err) => {
      console.error('[Scheduler/Redis] Error:', err.message);
    });
    redisClient.on('connect', () => {
      console.log('[Scheduler/Redis] Connected');
    });
  }
  return redisClient;
}
 
module.exports = { getRedisClient };