lts-stats-api/app/db/mongo/mongoSessions.js
2023-01-22 00:02:30 +01:00

99 lines
2.5 KiB
JavaScript

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