-const db = require('../../initializers/database')
-import { BaseRequestScheduler } from './base-request-scheduler'
+import * as Sequelize from 'sequelize'
+
+import { database as db } from '../../initializers/database'
+import { AbstractRequestScheduler } from './abstract-request-scheduler'
import { logger } from '../../helpers'
import {
REQUESTS_LIMIT_PODS,
REQUESTS_LIMIT_PER_POD
} from '../../initializers'
-class RequestScheduler extends BaseRequestScheduler {
+export type RequestSchedulerOptions = {
+ type: string
+ endpoint: string
+ data: Object
+ toIds: number[]
+ transaction: Sequelize.Transaction
+}
+
+class RequestScheduler extends AbstractRequestScheduler {
constructor () {
super()
return db.RequestToPod
}
- buildRequestObjects (requests) {
+ buildRequestObjects (requests: { [ toPodId: number ]: any }) {
const requestsToMakeGrouped = {}
Object.keys(requests).forEach(toPodId => {
return requestsToMakeGrouped
}
- // { type, endpoint, data, toIds, transaction }
- createRequest (options, callback) {
- const type = options.type
- const endpoint = options.endpoint
- const data = options.data
- const toIds = options.toIds
- const transaction = options.transaction
-
- const pods = []
+ createRequest ({ type, endpoint, data, toIds, transaction }: RequestSchedulerOptions, callback: (err: Error) => void) {
+ // TODO: check the setPods works
+ const podIds = []
// If there are no destination pods abort
if (toIds.length === 0) return callback(null)
toIds.forEach(toPod => {
- pods.push(db.Pod.build({ id: toPod }))
+ podIds.push(toPod)
})
const createQuery = {
}
}
- const dbRequestOptions = {
+ const dbRequestOptions: Sequelize.CreateOptions = {
transaction
}
return db.Request.create(createQuery, dbRequestOptions).asCallback((err, request) => {
if (err) return callback(err)
- return request.setPods(pods, dbRequestOptions).asCallback(callback)
+ return request.setPods(podIds, dbRequestOptions).asCallback(callback)
})
}