]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/request/request-video-event-scheduler.ts
Remove any typing from server
[github/Chocobozzz/PeerTube.git] / server / lib / request / request-video-event-scheduler.ts
index 4bb76f4c93537141280f8c263c9ad1ff25ee917c..8a008c51bbae9d3c15bb0bfc5152285c28c6c4e5 100644 (file)
@@ -1,13 +1,14 @@
 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 { RequestVideoEventType } from '../../../shared'
+import { RequestsVideoEventGrouped } from '../../models'
+import { RequestVideoEventType, RemoteVideoEventRequest, RemoteVideoEventType } from '../../../shared'
 
 export type RequestVideoEventSchedulerOptions = {
   type: RequestVideoEventType
@@ -16,7 +17,7 @@ export type RequestVideoEventSchedulerOptions = {
   transaction?: Sequelize.Transaction
 }
 
-class RequestVideoEventScheduler extends AbstractRequestScheduler {
+class RequestVideoEventScheduler extends AbstractRequestScheduler<RequestsVideoEventGrouped> {
   constructor () {
     super()
 
@@ -35,8 +36,8 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler {
     return db.RequestVideoEvent
   }
 
-  buildRequestObjects (eventsToProcess: { [ toPodId: number ]: any }[]) {
-    const requestsToMakeGrouped = {}
+  buildRequestsObjects (eventRequests: RequestsVideoEventGrouped) {
+    const requestsToMakeGrouped: RequestsObjects<RemoteVideoEventRequest> = {}
 
     /* Example:
         {
@@ -46,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]) {
@@ -86,8 +95,8 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler {
           requestsToMakeGrouped[toPodId].datas.push({
             data: {
               remoteId,
-              eventType,
-              count: eventsForVideo[eventType]
+              eventType: eventType as RemoteVideoEventType,
+              count: +eventsForVideo[eventType]
             }
           })
         })
@@ -97,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 = {}
@@ -109,7 +118,7 @@ class RequestVideoEventScheduler extends AbstractRequestScheduler {
       videoId
     }
 
-    return db.RequestVideoEvent.create(createQuery, dbRequestOptions).asCallback(callback)
+    return db.RequestVideoEvent.create(createQuery, dbRequestOptions)
   }
 }