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'; // In test mode, always use localhost const testConfig = isTest ? { host: 'localhost', port: 6379, } : config; const baseConfig = { host: testConfig.host, port: testConfig.port, password: testConfig.password, db: testConfig.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; }, }; // In non-test mode, spread config first to preserve additional properties, then override with our settings return isTest ? baseConfig : { ...config, ...baseConfig }; }