const { mongoExecute } = require("./mongoDBPool"); async function insertSessions(sessions, clear) { return await mongoExecute(async({ database }) => { const sessionsCollection = database.collection('sessions'); if (clear) { sessionsCollection.deleteMany({}); } await sessionsCollection.insertMany(sessions); }); } async function insertOneSessionTracks(sessionTracks) { return await mongoExecute(async({ database }) => { const sessionsCollection = database.collection('sessionTracks'); await sessionsCollection.insertOne(sessionTracks); }); } async function insertSessionTracks(sessionTracks, clear) { return await mongoExecute(async({ database }) => { const sessionsCollection = database.collection('sessionTracks'); if (clear) { sessionsCollection.deleteMany({}); } await sessionsCollection.insertMany(sessionTracks); }); } async function getSessions(start, end) { return await mongoExecute(async({ database }) => { const sessionsCollection = database.collection('sessions'); const startDate = start + 'T00:00:00.000Z'; const endDate = end + 'T23:59:59.999Z'; const result = await sessionsCollection.aggregate([{ $addFields: { completedDate: { $dateFromString: { "dateString": "$completedAt" } }, createdDate: { $dateFromString: { "dateString": "$createdAt" } }, updatedDate: { $dateFromString: { "dateString": "$updatedAt" } } } }, { $match: { createdDate: { $gt: new Date(startDate), $lte: new Date(endDate) } } }]).toArray(); return result; }); } async function getSessionTracks(sessionId) { return await mongoExecute( async({ database }) => { const tracksCollection = database.collection('sessionTracks'); const tracks = await tracksCollection.findOne({ sessionId }); return tracks; } ); } async function updateSessionTracks(tracks) { return await mongoExecute(async({ database }) => { const tracksCollection = database.collection('sessionTracks'); await tracksCollection.updateOne({ _id: tracks._id }, { $set: { calculatedTime: tracks.calculatedTime } }); }); } module.exports = { insertSessions, insertSessionTracks, insertOneSessionTracks, getSessions, getSessionTracks, updateSessionTracks, }; //http://localhost:3001/api/v1/ivao/init-sessions?callsign=LTS&from=2023-01-05T00:00:00&to=2023-01-05T23:59:59