lts-stats-api/test.js

189 lines
5.6 KiB
JavaScript
Raw Normal View History

2023-01-06 19:12:43 +01:00
require('dotenv').config();
2023-01-15 18:42:26 +01:00
const data = require('./testData/short.json');
const { analize, getShortStates, getAirTime } = require('./app/controllers/trackerAnalizer');
2023-09-09 18:24:57 +02:00
const { getSessions, getSession, updateSessionCalculatedTime, } = require('./app/db/mongo/mongoSessions');
const { getIvaoPilotsNow, getIvaoSessionTracks } = require('./app/requests/ivao/session');
const { createUserMongo, updateUserHash } = require('./app/db/mongo/mongoUsers');
const { getUserFromReferenceTable } = require('./app/db/mongo/mongoPilots');
const { getHashedPassword, changePassword } = require('./app/controllers/adminController');
const { mongoExecute } = require('./app/db/mongo/mongoDBPool');
const { getSessionTracks, updateSessionTracks, insertOneSessionTracks } = require('./app/db/mongo/mongoSessionTracks');
const { RedisClient } = require('./app/db/redis/redis');
2023-01-15 18:42:26 +01:00
// const { getHistoricalSessions, getSessionTracks } = require('./app/requests/ivao/session');
// const { getUsers } = require('./app/db/mysql/lsaUsers');
// const { RedisClient } = require('./app/db/redis/redis');
async function recalculateTime() {
// console.log(await getShortStates(data.tracks).map(d => ({ time: d.time, state: d.state, onGround: d.onGround })));
// console.log(await getAirTime(data.tracks));
2023-01-06 19:12:43 +01:00
2023-01-15 18:42:26 +01:00
const sessions = await getSessions('2022-01-01', '2023-11-01');
console.log('sessions.length :>> ', sessions.length);
let errs = [];
for (let index = 0; index < sessions.length; index++) {
let session;
try {
session = sessions[index];
const tracks = await getSessionTracks(session.id);
if (tracks) {
const newCalculatedTime = getAirTime(tracks.tracks);
// console.log(session.id, tracks.calculatedTime, newCalculatedTime);
tracks.calculatedTime = newCalculatedTime;
await updateSessionTracks(tracks);
}
} catch (err) {
console.log(session.id);
errs.push(session.id, err.message);
}
}
if (!errs.length) {
console.log('process ended OK');
} else {
console.log(errs);
}
2023-01-06 19:12:43 +01:00
}
2023-09-09 18:24:57 +02:00
function g() {
const data = mongoExecute(async({ collection }) => {
return await collection.aggregate([{
$addFields: {
createdDate: {
$dateFromString: {
dateString: "$createdAt",
},
},
},
},
{
$match: {
createdDate: {
$gt: new Date("2023-01-01T00:00:00.000Z"),
$lte: new Date("2023-01-31T23:59:59.999Z"),
},
},
},
{
$lookup: {
from: "sessionTracks",
localField: "id",
foreignField: "sessionId",
as: "track",
},
},
{
$unwind: {
path: "$track",
},
},
{
$group: {
_id: "$userId",
totalTime: {
$sum: "$track.calculatedTime",
},
},
},
]).toArray();
}, { colName: 'sessions' });
data.then(async(d) => {
const final = [];
for (let index = 0; index < d.length; index++) {
const pilot = d[index];
const ref = await getUserFromReferenceTable(String(pilot._id));
final.push({
vid: pilot._id,
name: ref.name,
hours: Number((pilot.totalTime / 3600).toFixed(2)),
});
}
console.log('horas\tvid\tNombre');
console.log('======================================');
final.sort((a, b) => b.hours - a.hours).forEach(d => {
console.log(`${d.hours}\t${d.vid}\t${d.name}`);
})
})
}
2023-01-15 18:42:26 +01:00
async function f() {
2023-01-22 00:02:30 +01:00
2023-09-09 18:24:57 +02:00
// changePassword('admin', 'qwerty123', 'qwerty123');
// const crypto = require('crypto');
// await createUserMongo({
// id: crypto.randomBytes(16).toString("hex"),
// username: 'admin',
// hash: getHashedPassword('nevada98'),
// roles: ['admin']
// });
// await createUserMongo({
// id: crypto.randomBytes(16).toString("hex"),
// username: 'capcabal',
// hash: getHashedPassword('Kpitan123'),
// roles: ['cabal'],
// firstname: 'Carlos',
// lastname: 'Cabal',
// vid: 665507
// });
}
async function updateCalculated() {
const tracks = await mongoExecute(async({ collection }) => {
const res = await collection.find({}).toArray();
return res;
}, { colName: 'sessionTracks' });
for (let index = 0; index < tracks.length; index++) {
const track = tracks[index];
if (Number.isInteger(track.calculatedTime)) {
const session = await getSession(track.sessionId);
if (session) {
session.calculatedTime = track.calculatedTime;
await updateSessionCalculatedTime(session);
console.log('updatet session :>> ', session.id);
}
}
}
console.log('updated total: ', tracks.length);
2023-01-15 18:42:26 +01:00
}
2023-09-09 18:24:57 +02:00
// updateCalculated()
(async function() {
// await require('./app/tasks/sync').taskSyncLSAUsers();
// const redisUsers = await RedisClient.getPair('users');
// console.log('redisUsers :>> ', redisUsers);
// const data = await getSessionsTotalCalculatedTimeByPilot('2023-01-01', '2023-01-31');
// for (let index = 0; index < data.length; index++) {
// const row = data[index];
// const user = redisUsers.find(d => Number(d.vid) === row._id);
// row.user = user;
// }
// console.log('data :>> ', data);
const sessionId = 51777503;
const t = await getIvaoSessionTracks(sessionId);
console.log('tracks :>> ', t);
const calculatedTime = getAirTime(t);
console.log('calculatedTime :>> ', calculatedTime);
const tracks = {
sessionId,
tracks: t,
calculatedTime,
};
console.log('tracks :>> ', tracks);
await insertOneSessionTracks(tracks);
})();
2023-01-15 18:42:26 +01:00
2023-01-06 19:12:43 +01:00
2023-01-15 18:42:26 +01:00
// require('./app/tasks/sync')();