import type { RedisConfig } from './types';

/**
 * Get Redis connection configuration with retry settings
 */
export function getRedisConnection(config: RedisConfig) {
  const isTest = process.env.NODE_ENV === 'test' || process.env['BUNIT'] === '1';

  return {
    host: config.host,
    port: config.port,
    password: config.password,
    db: config.db,
    maxRetriesPerRequest: null, // Required by BullMQ
    enableReadyCheck: false,
    connectTimeout: isTest ? 1000 : 3000,
    lazyConnect: false, // Changed from true to ensure connection is established immediately
    keepAlive: true, // Changed from false to maintain persistent connections
    retryStrategy: (times: number) => {
      const maxRetries = isTest ? 1 : 3;
      if (times > maxRetries) {
        return null; // Stop retrying
      }
      const delay = isTest ? 100 : Math.min(times * 100, 3000);
      return delay;
    },
  };
}
