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, }