import Redis from 'ioredis';
import { config } from './index';

let redis: Redis | null = null;

try {
  redis = new Redis({
    host: config.redis.host,
    port: config.redis.port,
    password: config.redis.password,
    maxRetriesPerRequest: 3,
    retryStrategy(times) {
      if (times > 3) return null;
      return Math.min(times * 200, 5000);
    },
    lazyConnect: true,
  });

  redis.connect().then(() => {
    console.log('Redis connected');
  }).catch(() => {
    console.log('Redis not available — rate limiting disabled');
    redis = null;
  });

  redis.on('error', () => {
    if (redis) {
      console.log('Redis connection lost — rate limiting disabled');
      redis = null;
    }
  });
} catch {
  console.log('Redis not available — rate limiting disabled');
  redis = null;
}

export { redis };
