37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
const { getRedisClient } = require("./client")
|
|
|
|
function createRedisClient() {
|
|
return getRedisClient()
|
|
}
|
|
|
|
async function getTrendingDealListId(redis, trendingListId) {
|
|
if (trendingListId) return String(trendingListId)
|
|
const latest = await redis.get("deals:lists:trending:latest")
|
|
return latest ? String(latest) : null
|
|
}
|
|
|
|
async function getTrendingDealIds({ trendingListId } = {}) {
|
|
const redis = createRedisClient()
|
|
|
|
try {
|
|
const listId = await getTrendingDealListId(redis, trendingListId)
|
|
if (!listId) return { trendingListId: null, dealIds: [] }
|
|
|
|
const key = `deals:lists:trending:${listId}`
|
|
const raw = await redis.call("JSON.GET", key, "$.dealIds")
|
|
if (!raw) return { trendingListId: listId, dealIds: [] }
|
|
|
|
const parsed = JSON.parse(raw)
|
|
const dealIds = Array.isArray(parsed) ? parsed[0] : []
|
|
|
|
return {
|
|
trendingListId: listId,
|
|
dealIds: Array.isArray(dealIds) ? dealIds.map((id) => Number(id)) : [],
|
|
}
|
|
} catch {
|
|
return { trendingListId: null, dealIds: [] }
|
|
} finally {}
|
|
}
|
|
|
|
module.exports = { getTrendingDealIds }
|