Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,415 Bytes
f70dd7e b161bd3 f70dd7e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
"use server"
import { Redis } from "@upstash/redis"
import { redisToken, redisUrl } from "./config"
import { developerMode } from "@/app/config"
const redis = new Redis({
url: redisUrl,
token: redisToken
})
export async function getNumberOfViewsForVideos(videoIds: string[]): Promise<Record<string, number>> {
if (!Array.isArray(videoIds)) {
return {}
}
try {
const stats: Record<string, number> = {}
const ids: string[] = []
for (const videoId of videoIds) {
ids.push(`videos:${videoId}:stats:views`)
stats[videoId] = 0
}
const values = await redis.mget<number[]>(...ids)
values.forEach((nbViews, i) => {
const redisId = `${ids[i] || ""}`
const videoId = redisId.replace(":stats:views", "").replace("videos:", "")
stats[videoId] = nbViews || 0
})
return stats
} catch (err) {
return {}
}
}
export async function getNumberOfViewsForVideo(videoId: string): Promise<number> {
try {
const key = `videos:${videoId}:stats`
const result = await redis.get<number>(key) || 0
return result
} catch (err) {
return 0
}
}
export async function watchVideo(videoId: string): Promise<number> {
if (developerMode) {
return getNumberOfViewsForVideo(videoId)
}
try {
const result = await redis.incr(`videos:${videoId}:stats:views`)
return result
} catch (err) {
return 0
}
}
|