const logger = require('../helpers/logger')
module.exports = class RequestVideoQaduScheduler extends BaseRequestScheduler {
-
constructor () {
super()
if (!requestsToMakeGrouped[hashKey]) {
requestsToMakeGrouped[hashKey] = {
toPod: pod,
- endpoint: constants.REQUEST_ENDPOINTS.QADU,
+ endpoint: constants.REQUEST_VIDEO_QADU_ENDPOINT,
ids: [], // request ids, to delete them from the DB in the future
datas: [], // requests data
videos: {}
}
}
- if (!requestsToMakeGrouped[hashKey].videos[video.id]) {
- requestsToMakeGrouped[hashKey].videos[video.id] = {}
- }
-
- const videoData = requestsToMakeGrouped[hashKey].videos[video.id]
+ // Maybe another attribute was filled for this video
+ let videoData = requestsToMakeGrouped[hashKey].videos[video.id]
+ if (!videoData) videoData = {}
switch (request.type) {
case constants.REQUEST_VIDEO_QADU_TYPES.LIKES:
break
case constants.REQUEST_VIDEO_QADU_TYPES.DISLIKES:
- videoData.likes = video.dislikes
+ videoData.dislikes = video.dislikes
break
case constants.REQUEST_VIDEO_QADU_TYPES.VIEWS:
// Do not forget the remoteId so the remote pod can identify the video
videoData.remoteId = video.id
requestsToMakeGrouped[hashKey].ids.push(request.id)
+
+ // Maybe there are multiple quick and dirty update for the same video
+ // We use this hashmap to dedupe them
requestsToMakeGrouped[hashKey].videos[video.id] = videoData
})
})
+ // Now we deduped similar quick and dirty updates, we can build our requests datas
Object.keys(requestsToMakeGrouped).forEach(hashKey => {
Object.keys(requestsToMakeGrouped[hashKey].videos).forEach(videoId => {
const videoData = requestsToMakeGrouped[hashKey].videos[videoId]