mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 18:44:16 +00:00
73 lines
1.4 KiB
JavaScript
Executable File
73 lines
1.4 KiB
JavaScript
Executable File
import Redis from "ioredis"
|
|
|
|
export function composeURL({ host, port, username, password } = {}) {
|
|
let url = "redis://"
|
|
|
|
if (username && password) {
|
|
url += username + ":" + password + "@"
|
|
}
|
|
|
|
url += host ?? "localhost"
|
|
|
|
if (port) {
|
|
url += ":" + port
|
|
}
|
|
|
|
return url
|
|
}
|
|
|
|
export default (params = {}) => {
|
|
let { REDIS_HOST, REDIS_PORT, REDIS_NO_AUTH, REDIS_AUTH, REDIS_DB } =
|
|
process.env
|
|
|
|
let clientOptions = {
|
|
host: REDIS_HOST ?? "localhost",
|
|
port: REDIS_PORT ?? 6379,
|
|
lazyConnect: true,
|
|
autoConnect: false,
|
|
...params,
|
|
}
|
|
|
|
// if redis auth is provided, set username and password
|
|
if (!ToBoolean(REDIS_NO_AUTH) && REDIS_AUTH) {
|
|
const [user, password] = REDIS_AUTH.split(":")
|
|
|
|
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
|
|
}
|
|
|
|
let client = new Redis(clientOptions)
|
|
|
|
client.on("error", (error) => {
|
|
console.error("❌ Redis client error:", error)
|
|
})
|
|
|
|
client.on("connect", () => {
|
|
console.log(`✅ Redis client connected [${process.env.REDIS_HOST}]`)
|
|
})
|
|
|
|
client.on("reconnecting", () => {
|
|
console.log("🔄 Redis client reconnecting...")
|
|
})
|
|
|
|
const initialize = async () => {
|
|
return await new Promise((resolve, reject) => {
|
|
console.log(`🔌 Connecting to Redis client [${REDIS_HOST}]`)
|
|
|
|
client.connect(resolve)
|
|
})
|
|
}
|
|
|
|
return {
|
|
client,
|
|
initialize,
|
|
}
|
|
}
|