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