X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Frequest%2Frequest-video-event-scheduler.ts;h=8a008c51bbae9d3c15bb0bfc5152285c28c6c4e5;hb=4771e0008dd26eadbb7eaff64255a6ec914fdadb;hp=c9d1651177a89ce7bec12577da74bc521077e65a;hpb=15a302943d84bc0978b84fe33110c4daa451d311;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/request/request-video-event-scheduler.ts b/server/lib/request/request-video-event-scheduler.ts index c9d165117..8a008c51b 100644 --- a/server/lib/request/request-video-event-scheduler.ts +++ b/server/lib/request/request-video-event-scheduler.ts @@ -1,21 +1,23 @@ import * as Sequelize from 'sequelize' import { database as db } from '../../initializers/database' -import { AbstractRequestScheduler } from './abstract-request-scheduler' +import { AbstractRequestScheduler, RequestsObjects } from './abstract-request-scheduler' import { REQUESTS_VIDEO_EVENT_LIMIT_PODS, REQUESTS_VIDEO_EVENT_LIMIT_PER_POD, REQUEST_VIDEO_EVENT_ENDPOINT } from '../../initializers' +import { RequestsVideoEventGrouped } from '../../models' +import { RequestVideoEventType, RemoteVideoEventRequest, RemoteVideoEventType } from '../../../shared' export type RequestVideoEventSchedulerOptions = { - type: string + type: RequestVideoEventType videoId: string count?: number transaction?: Sequelize.Transaction } -class RequestVideoEventScheduler extends AbstractRequestScheduler { +class RequestVideoEventScheduler extends AbstractRequestScheduler { constructor () { super() @@ -34,8 +36,8 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler { return db.RequestVideoEvent } - buildRequestObjects (eventsToProcess: { [ toPodId: number ]: any }[]) { - const requestsToMakeGrouped = {} + buildRequestsObjects (eventRequests: RequestsVideoEventGrouped) { + const requestsToMakeGrouped: RequestsObjects = {} /* Example: { @@ -45,12 +47,20 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler { } } */ - const eventsPerVideoPerPod = {} + const eventsPerVideoPerPod: { + [ podId: string ]: { + [ videoRemoteId: string ]: { + views?: number + likes?: number + dislikes?: number + } + } + } = {} // We group video events per video and per pod // We add the counts of the same event types - Object.keys(eventsToProcess).forEach(toPodId => { - eventsToProcess[toPodId].forEach(eventToProcess => { + Object.keys(eventRequests).forEach(toPodId => { + eventRequests[toPodId].forEach(eventToProcess => { if (!eventsPerVideoPerPod[toPodId]) eventsPerVideoPerPod[toPodId] = {} if (!requestsToMakeGrouped[toPodId]) { @@ -85,8 +95,8 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler { requestsToMakeGrouped[toPodId].datas.push({ data: { remoteId, - eventType, - count: eventsForVideo[eventType] + eventType: eventType as RemoteVideoEventType, + count: +eventsForVideo[eventType] } }) }) @@ -96,7 +106,7 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler { return requestsToMakeGrouped } - createRequest ({ type, videoId, count, transaction }: RequestVideoEventSchedulerOptions, callback: (err: Error) => void) { + createRequest ({ type, videoId, count, transaction }: RequestVideoEventSchedulerOptions) { if (count === undefined) count = 1 const dbRequestOptions: Sequelize.CreateOptions = {} @@ -108,7 +118,7 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler { videoId } - return db.RequestVideoEvent.create(createQuery, dbRequestOptions).asCallback(callback) + return db.RequestVideoEvent.create(createQuery, dbRequestOptions) } }