1 import * as Sequelize from 'sequelize'
2 import * as Promise from 'bluebird'
4 import { AbstractRequestClass } from './abstract-request-interface'
5 import { PodInstance, PodAttributes } from '../pod/pod-interface'
6 import { RequestEndpoint } from '../../../shared/models/request-scheduler.model'
8 export type RequestsGrouped = {
10 request: RequestInstance,
15 export namespace RequestMethods {
16 export type CountTotalRequests = () => Promise<number>
18 export type ListWithLimitAndRandom = (limitPods: number, limitRequestsPerPod: number) => Promise<RequestsGrouped>
20 export type RemoveWithEmptyTo = () => Promise<number>
22 export type RemoveAll = () => Promise<void>
25 export interface RequestClass extends AbstractRequestClass<RequestsGrouped> {
26 countTotalRequests: RequestMethods.CountTotalRequests
27 listWithLimitAndRandom: RequestMethods.ListWithLimitAndRandom
28 removeWithEmptyTo: RequestMethods.RemoveWithEmptyTo
29 removeAll: RequestMethods.RemoveAll
32 export interface RequestAttributes {
34 endpoint: RequestEndpoint
37 export interface RequestInstance extends RequestClass, RequestAttributes, Sequelize.Instance<RequestAttributes> {
42 setPods: Sequelize.HasManySetAssociationsMixin<PodAttributes, number>
46 export interface RequestModel extends RequestClass, Sequelize.Model<RequestInstance, RequestAttributes> {}