1 import * as Sequelize from 'sequelize'
2 import * as Promise from 'bluebird'
4 import { AbstractRequestClass, AbstractRequestToPodClass } from './abstract-request-interface'
5 import { VideoInstance } from '../video'
6 import { PodInstance } from '../pod'
8 import { RequestVideoEventType } from '../../../shared/models/request-scheduler.model'
10 export type RequestsVideoEventGrouped = {
13 type: RequestVideoEventType
20 export namespace RequestVideoEventMethods {
21 export type CountTotalRequests = () => Promise<number>
23 export type ListWithLimitAndRandom = (limitPods: number, limitRequestsPerPod: number) => Promise<RequestsVideoEventGrouped>
25 export type RemoveByRequestIdsAndPod = (ids: number[], podId: number) => Promise<number>
27 export type RemoveAll = () => Promise<void>
30 export interface RequestVideoEventClass extends AbstractRequestClass<RequestsVideoEventGrouped>, AbstractRequestToPodClass {
31 countTotalRequests: RequestVideoEventMethods.CountTotalRequests
32 listWithLimitAndRandom: RequestVideoEventMethods.ListWithLimitAndRandom
33 removeByRequestIdsAndPod: RequestVideoEventMethods.RemoveByRequestIdsAndPod
34 removeAll: RequestVideoEventMethods.RemoveAll
37 export interface RequestVideoEventAttributes {
38 type: RequestVideoEventType
42 export interface RequestVideoEventInstance
43 extends RequestVideoEventClass, RequestVideoEventAttributes, Sequelize.Instance<RequestVideoEventAttributes> {
49 export interface RequestVideoEventModel
50 extends RequestVideoEventClass, Sequelize.Model<RequestVideoEventInstance, RequestVideoEventAttributes> {}