lts-stats-api/app/controllers/adminController.js

50 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-01-15 18:42:26 +01:00
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,
}