From 63da93e9f443a799208c8e706616a828fa528a3e Mon Sep 17 00:00:00 2001 From: schneefux Date: Sat, 5 May 2018 13:52:50 +0200 Subject: move request param generation to own file, retry failed queries --- params.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 params.js (limited to 'params.js') diff --git a/params.js b/params.js new file mode 100644 index 0000000..b3dcb98 --- /dev/null +++ b/params.js @@ -0,0 +1,37 @@ +#!/usr/bin/node + +const R = require('ramda'); + +function paramsForHourSample(config) { + const requestArgsForRegionStartEnd = R.curry((region, start, end) => [ + `/shards/${region}/matches`, { + 'sort': '-createdAt', + 'filter[gameMode]': R.join(',', config.modes), + 'filter[createdAt-start]': start.toISOString(), + 'filter[createdAt-end]': end.toISOString(), + 'page[limit]': '5', + 'page[offset]': '0', + } + ]); + + const requestsPerMinutePerRegion = Math.floor(config.rpm / config.regions.length); + const splitDurationMinutes = Math.floor(60 / requestsPerMinutePerRegion); + const splitMoments = (hour) => R.map( + (offsetIndex) => [ + hour.clone().startOf('hour').minutes(offsetIndex * splitDurationMinutes), + hour.clone().startOf('hour').minutes((offsetIndex + 1) * splitDurationMinutes), + ], + R.range(0, requestsPerMinutePerRegion), + ); + + return R.pipe( + splitMoments, + R.xprod(config.regions), + R.map(R.unnest), + R.map(R.apply(requestArgsForRegionStartEnd)), + ); +} + +module.exports = { + paramsForHourSample, +}; -- cgit v1.3.1