]>
Commit | Line | Data |
---|---|---|
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' | |
6 | import { PodInstance } from '../pod' | |
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> {} |