]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/models/request/request-interface.ts
Fix test (#71)
[github/Chocobozzz/PeerTube.git] / server / models / request / request-interface.ts
... / ...
CommitLineData
1import * as Sequelize from 'sequelize'
2
3import { PodInstance, PodAttributes } from '../pod'
4import { RequestEndpoint } from '../../../shared/models/request-scheduler.model'
5
6export type RequestsGrouped = {
7 [ podId: number ]: {
8 request: RequestInstance,
9 pod: PodInstance
10 }[]
11}
12
13export namespace RequestMethods {
14 export type CountTotalRequestsCallback = (err: Error, total: number) => void
15 export type CountTotalRequests = (callback: CountTotalRequestsCallback) => void
16
17 export type ListWithLimitAndRandomCallback = (err: Error, requestsGrouped?: RequestsGrouped) => void
18 export type ListWithLimitAndRandom = (limitPods, limitRequestsPerPod, callback: ListWithLimitAndRandomCallback) => void
19
20 export type RemoveWithEmptyToCallback = (err: Error) => void
21 export type RemoveWithEmptyTo = (callback: RemoveWithEmptyToCallback) => void
22
23 export type RemoveAllCallback = (err: Error) => void
24 export type RemoveAll = (callback: RemoveAllCallback) => void
25}
26
27export interface RequestClass {
28 countTotalRequests: RequestMethods.CountTotalRequests
29 listWithLimitAndRandom: RequestMethods.ListWithLimitAndRandom
30 removeWithEmptyTo: RequestMethods.RemoveWithEmptyTo
31 removeAll: RequestMethods.RemoveAll
32}
33
34export interface RequestAttributes {
35 request: object
36 endpoint: RequestEndpoint
37}
38
39export interface RequestInstance extends RequestClass, RequestAttributes, Sequelize.Instance<RequestAttributes> {
40 id: number
41 createdAt: Date
42 updatedAt: Date
43
44 setPods: Sequelize.HasManySetAssociationsMixin<PodAttributes, number>
45 Pods: PodInstance[]
46}
47
48export interface RequestModel extends RequestClass, Sequelize.Model<RequestInstance, RequestAttributes> {}