50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
|
const moment = require('moment');
|
||
|
const { insertSessions, insertSessionTracks } = require("../db/mongo/mongoSessions");
|
||
|
const { getHistoricalSessions, getIvaoSessionTracks } = require("../requests/ivao/session");
|
||
|
|
||
|
async function initSessionsData(opts) {
|
||
|
const { callsign, userId, from, clear = false } = opts;
|
||
|
let to = opts.to;
|
||
|
if (!to) {
|
||
|
to = moment().utc().subtract(1, 'day').endOf('day').format();
|
||
|
}
|
||
|
const data = await getHistoricalSessions({
|
||
|
callsign,
|
||
|
userId,
|
||
|
from,
|
||
|
to
|
||
|
});
|
||
|
await insertSessions(data, clear);
|
||
|
|
||
|
console.log(`${data.length} sessions inserted.`);
|
||
|
await initSessionsTracks(data.map(d => d.id), clear);
|
||
|
}
|
||
|
|
||
|
async function initSessionsTracks(sessions, clear) {
|
||
|
const array = [];
|
||
|
const batchSize = 50;
|
||
|
|
||
|
for (let index = 0; index < sessions.length; index++) {
|
||
|
const sessionId = sessions[index];
|
||
|
const tracks = await getIvaoSessionTracks(sessionId);
|
||
|
array.push({
|
||
|
sessionId,
|
||
|
tracks,
|
||
|
});
|
||
|
|
||
|
if (index < sessions.length - 1 && (index + 1) % batchSize === 0) {
|
||
|
await pause(5000);
|
||
|
}
|
||
|
}
|
||
|
await insertSessionTracks(array, clear);
|
||
|
|
||
|
console.log(`${array.length} tracks inserted.`)
|
||
|
}
|
||
|
|
||
|
async function pause(millis) {
|
||
|
await new Promise((resolve) => setTimeout(resolve, millis));
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
initSessionsData,
|
||
|
}
|