import env from '#start/env'
import { type RedisOptions } from 'ioredis'

/**
 * Connexion Redis partagée pour BullMQ. On garde un objet d'options
 * (et pas une instance) parce que BullMQ instancie ses propres clients
 * pour chaque queue/worker.
 */
export const redisConnection: RedisOptions = {
  host: env.get('REDIS_HOST', 'localhost'),
  port: env.get('REDIS_PORT', 6379),
  password: env.get('REDIS_PASSWORD') || undefined,
  // Requis par BullMQ pour les blocking commands.
  maxRetriesPerRequest: null,
}

/**
 * Liste des queues. La concurrence est appliquée côté worker.
 * Ajouter une queue ici → ajouter un Worker correspondant dans #start/queue.ts.
 */
export const queueNames = ['ocr', 'relances', 'checkins', 'kpis'] as const
export type QueueName = (typeof queueNames)[number]

export const queueConcurrency: Record<QueueName, number> = {
  ocr: 2,
  relances: 5,
  checkins: 5,
  kpis: 1,
}
