1 import * as Sequelize from 'sequelize'
3 import { PodInstance, PodAttributes } from '../pod'
4 import { RequestEndpoint } from '../../../shared/models/request-scheduler.model'
6 export type RequestsGrouped = {
8 request: RequestInstance,
13 export namespace RequestMethods {
14 export type CountTotalRequestsCallback = (err: Error, total: number) => void
15 export type CountTotalRequests = (callback: CountTotalRequestsCallback) => void
17 export type ListWithLimitAndRandomCallback = (err: Error, requestsGrouped?: RequestsGrouped) => void
18 export type ListWithLimitAndRandom = (limitPods, limitRequestsPerPod, callback: ListWithLimitAndRandomCallback) => void
20 export type RemoveWithEmptyToCallback = (err: Error) => void
21 export type RemoveWithEmptyTo = (callback: RemoveWithEmptyToCallback) => void
23 export type RemoveAllCallback = (err: Error) => void
24 export type RemoveAll = (callback: RemoveAllCallback) => void
27 export interface RequestClass {
28 countTotalRequests: RequestMethods.CountTotalRequests
29 listWithLimitAndRandom: RequestMethods.ListWithLimitAndRandom
30 removeWithEmptyTo: RequestMethods.RemoveWithEmptyTo
31 removeAll: RequestMethods.RemoveAll
34 export interface RequestAttributes {
36 endpoint: RequestEndpoint
39 export interface RequestInstance extends RequestClass, RequestAttributes, Sequelize.Instance<RequestAttributes> {
44 setPods: Sequelize.HasManySetAssociationsMixin<PodAttributes, number>
48 export interface RequestModel extends RequestClass, Sequelize.Model<RequestInstance, RequestAttributes> {}