]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/request/request-interface.ts
Remove any typing from server
[github/Chocobozzz/PeerTube.git] / server / models / request / request-interface.ts
CommitLineData
e02643f3 1import * as Sequelize from 'sequelize'
6fcd19ba 2import * as Promise from 'bluebird'
e02643f3 3
6fcd19ba 4import { AbstractRequestClass } from './abstract-request-interface'
74889a71 5import { PodInstance, PodAttributes } from '../pod'
ee9e7b61 6import { RequestEndpoint } from '../../../shared/models/request-scheduler.model'
69818c93
C
7
8export type RequestsGrouped = {
9 [ podId: number ]: {
10 request: RequestInstance,
11 pod: PodInstance
12 }[]
13}
e02643f3
C
14
15export namespace RequestMethods {
6fcd19ba 16 export type CountTotalRequests = () => Promise<number>
69818c93 17
6fcd19ba 18 export type ListWithLimitAndRandom = (limitPods: number, limitRequestsPerPod: number) => Promise<RequestsGrouped>
69818c93 19
6fcd19ba 20 export type RemoveWithEmptyTo = () => Promise<number>
69818c93 21
6fcd19ba 22 export type RemoveAll = () => Promise<void>
e02643f3
C
23}
24
6fcd19ba 25export interface RequestClass extends AbstractRequestClass<RequestsGrouped> {
e02643f3
C
26 countTotalRequests: RequestMethods.CountTotalRequests
27 listWithLimitAndRandom: RequestMethods.ListWithLimitAndRandom
28 removeWithEmptyTo: RequestMethods.RemoveWithEmptyTo
29 removeAll: RequestMethods.RemoveAll
30}
31
32export interface RequestAttributes {
33 request: object
ee9e7b61 34 endpoint: RequestEndpoint
e02643f3
C
35}
36
69818c93 37export interface RequestInstance extends RequestClass, RequestAttributes, Sequelize.Instance<RequestAttributes> {
e02643f3
C
38 id: number
39 createdAt: Date
40 updatedAt: Date
41
42 setPods: Sequelize.HasManySetAssociationsMixin<PodAttributes, number>
69818c93 43 Pods: PodInstance[]
e02643f3
C
44}
45
46export interface RequestModel extends RequestClass, Sequelize.Model<RequestInstance, RequestAttributes> {}