import { Provider } from "@nestjs/common";
import Redis from "ioredis";

export const REDIS_PUBSUB = "REDIS_PUBSUB";

/** Publisher used when a socket handler itself calls into libs/messaging
 * (e.g. message:send) — same connection shape as apps/api's, kept separate
 * per-process since each Nest app owns its own ioredis client. */
export const redisPubSubProvider: Provider = {
  provide: REDIS_PUBSUB,
  useFactory: () => {
    const client = new Redis(process.env.REDIS_URL ?? "redis://localhost:6379", { maxRetriesPerRequest: 1 });
    client.on("error", () => undefined);
    return client;
  },
};
