mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-04 02:09:37 +02:00
server/server -> server/core
This commit is contained in:
parent
114327d4ce
commit
5a3d0650c9
838 changed files with 111 additions and 111 deletions
52
server/core/lib/schedulers/video-views-buffer-scheduler.ts
Normal file
52
server/core/lib/schedulers/video-views-buffer-scheduler.ts
Normal file
|
@ -0,0 +1,52 @@
|
|||
import { logger, loggerTagsFactory } from '@server/helpers/logger.js'
|
||||
import { VideoModel } from '@server/models/video/video.js'
|
||||
import { SCHEDULER_INTERVALS_MS } from '../../initializers/constants.js'
|
||||
import { federateVideoIfNeeded } from '../activitypub/videos/index.js'
|
||||
import { Redis } from '../redis.js'
|
||||
import { AbstractScheduler } from './abstract-scheduler.js'
|
||||
|
||||
const lTags = loggerTagsFactory('views')
|
||||
|
||||
export class VideoViewsBufferScheduler extends AbstractScheduler {
|
||||
|
||||
private static instance: AbstractScheduler
|
||||
|
||||
protected schedulerIntervalMs = SCHEDULER_INTERVALS_MS.VIDEO_VIEWS_BUFFER_UPDATE
|
||||
|
||||
private constructor () {
|
||||
super()
|
||||
}
|
||||
|
||||
protected async internalExecute () {
|
||||
const videoIds = await Redis.Instance.listLocalVideosViewed()
|
||||
if (videoIds.length === 0) return
|
||||
|
||||
for (const videoId of videoIds) {
|
||||
try {
|
||||
const views = await Redis.Instance.getLocalVideoViews(videoId)
|
||||
await Redis.Instance.deleteLocalVideoViews(videoId)
|
||||
|
||||
const video = await VideoModel.loadFull(videoId)
|
||||
if (!video) {
|
||||
logger.debug('Video %d does not exist anymore, skipping videos view addition.', videoId, lTags())
|
||||
continue
|
||||
}
|
||||
|
||||
logger.info('Processing local video %s views buffer.', video.uuid, lTags(video.uuid))
|
||||
|
||||
// If this is a remote video, the origin instance will send us an update
|
||||
await VideoModel.incrementViews(videoId, views)
|
||||
|
||||
// Send video update
|
||||
video.views += views
|
||||
await federateVideoIfNeeded(video, false)
|
||||
} catch (err) {
|
||||
logger.error('Cannot process local video views buffer of video %d.', videoId, { err, ...lTags() })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static get Instance () {
|
||||
return this.instance || (this.instance = new this())
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue