import { logInfo } from "@/lib/logger";
import type { RedisOptions } from "ioredis";
import Redis from "ioredis";

export const createRedisDB = (options: RedisOptions) => {
  const redis = new Redis(options);
  redis.on("connect", () => console.log("[REDIS] Client connecting..."));
  redis.on("ready", () => console.log("[REDIS] Client ready"));
  redis.on("error", (err) => console.error("[REDIS] Client error:", err));
  logInfo("Connected to Redis DB successfully");
  return redis;
};

export const createRedisSubscribers = (options: RedisOptions) => {
  const redis = new Redis(options);
  const keyExpireSubscription = async () => {
    return redis.psubscribe("__keyevent@0__:expired");
  };

  return {
    keyExpireSubscription,
  };
};
