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