]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/request/request-video-event-interface.ts
Implement video transcoding on server side
[github/Chocobozzz/PeerTube.git] / server / models / request / request-video-event-interface.ts
1 import * as Sequelize from 'sequelize'
2 import * as Promise from 'bluebird'
3
4 import { AbstractRequestClass, AbstractRequestToPodClass } from './abstract-request-interface'
5 import { VideoInstance } from '../video/video-interface'
6 import { PodInstance } from '../pod/pod-interface'
7
8 import { RequestVideoEventType } from '../../../shared/models/request-scheduler.model'
9
10 export type RequestsVideoEventGrouped = {
11 [ podId: number ]: {
12 id: number
13 type: RequestVideoEventType
14 count: number
15 video: VideoInstance
16 pod: PodInstance
17 }[]
18 }
19
20 export namespace RequestVideoEventMethods {
21 export type CountTotalRequests = () => Promise<number>
22
23 export type ListWithLimitAndRandom = (limitPods: number, limitRequestsPerPod: number) => Promise<RequestsVideoEventGrouped>
24
25 export type RemoveByRequestIdsAndPod = (ids: number[], podId: number) => Promise<number>
26
27 export type RemoveAll = () => Promise<void>
28 }
29
30 export interface RequestVideoEventClass extends AbstractRequestClass<RequestsVideoEventGrouped>, AbstractRequestToPodClass {
31 countTotalRequests: RequestVideoEventMethods.CountTotalRequests
32 listWithLimitAndRandom: RequestVideoEventMethods.ListWithLimitAndRandom
33 removeByRequestIdsAndPod: RequestVideoEventMethods.RemoveByRequestIdsAndPod
34 removeAll: RequestVideoEventMethods.RemoveAll
35 }
36
37 export interface RequestVideoEventAttributes {
38 type: RequestVideoEventType
39 count: number
40 }
41
42 export interface RequestVideoEventInstance
43 extends RequestVideoEventClass, RequestVideoEventAttributes, Sequelize.Instance<RequestVideoEventAttributes> {
44 id: number
45
46 Video: VideoInstance
47 }
48
49 export interface RequestVideoEventModel
50 extends RequestVideoEventClass, Sequelize.Model<RequestVideoEventInstance, RequestVideoEventAttributes> {}