diff --git a/packages/server/classes/RedisClient/index.js b/packages/server/classes/RedisClient/index.js index 54813702..b2eecc05 100755 --- a/packages/server/classes/RedisClient/index.js +++ b/packages/server/classes/RedisClient/index.js @@ -1,79 +1,72 @@ import Redis from "ioredis" -export function composeURL({ - host, - port, - username, - password, -} = {}) { - let url = "redis://" +export function composeURL({ host, port, username, password } = {}) { + let url = "redis://" - if (username && password) { - url += username + ":" + password + "@" - } + if (username && password) { + url += username + ":" + password + "@" + } - url += host ?? "localhost" + url += host ?? "localhost" - if (port) { - url += ":" + port - } + if (port) { + url += ":" + port + } - return url + return url } -export default () => { - let { REDIS_HOST, REDIS_PORT, REDIS_NO_AUTH, REDIS_AUTH, REDIS_DB } = process.env +export default (params = {}) => { + let { REDIS_HOST, REDIS_PORT, REDIS_NO_AUTH, REDIS_AUTH, REDIS_DB } = + process.env - REDIS_NO_AUTH = ToBoolean(REDIS_NO_AUTH) + let clientOptions = { + host: REDIS_HOST ?? "localhost", + port: REDIS_PORT ?? 6379, + lazyConnect: true, + autoConnect: false, + ...params, + } - let clientOptions = { - host: REDIS_HOST, - port: REDIS_PORT, - lazyConnect: true, - autoConnect: false - } + // if redis auth is provided, set username and password + if (!ToBoolean(REDIS_NO_AUTH) && REDIS_AUTH) { + const [user, password] = REDIS_AUTH.split(":") - if (!REDIS_NO_AUTH) { - if (REDIS_AUTH) { - const [user, password] = REDIS_AUTH.split(":") + clientOptions.username = user + clientOptions.password = password + } else { + console.log("⚠️ Redis auth is disabled") + } - clientOptions.username = user - clientOptions.password = password - } - } else { - console.log("⚠️ Redis auth is disabled") - } + // if redis db is provided, set db + if (REDIS_DB) { + clientOptions.db = REDIS_DB + } - if (REDIS_DB) { - clientOptions.db = REDIS_DB - } + let client = new Redis(clientOptions) - clientOptions = composeURL(clientOptions) + client.on("error", (error) => { + console.error("❌ Redis client error:", error) + }) - let client = new Redis(clientOptions.host, clientOptions.port, clientOptions) + client.on("connect", () => { + console.log(`✅ Redis client connected [${process.env.REDIS_HOST}]`) + }) - client.on("error", (error) => { - console.error("❌ Redis client error:", error) - }) + client.on("reconnecting", () => { + console.log("🔄 Redis client reconnecting...") + }) - client.on("connect", () => { - console.log(`✅ Redis client connected [${process.env.REDIS_HOST}]`) - }) + const initialize = async () => { + return await new Promise((resolve, reject) => { + console.log(`🔌 Connecting to Redis client [${REDIS_HOST}]`) - client.on("reconnecting", () => { - console.log("🔄 Redis client reconnecting...") - }) + client.connect(resolve) + }) + } - const initialize = async () => { - return await new Promise((resolve, reject) => { - console.log(`🔌 Connecting to Redis client [${REDIS_HOST}]`) - - client.connect(resolve) - }) - } - - return { - client, - initialize - } -} \ No newline at end of file + return { + client, + initialize, + } +}