import Finish from '../../../schemas/Finish.js' import Level from '../../../schemas/Level.js' import Player from '../../../schemas/Player.js' import initLog from '../../utills/log.js' import decodeMsgpack from './decodeMsgpack.js' const log = initLog("sqlite2mongo") /** * This handles some post-tasks that run after the initial checks. * @module libs/database/sqlite2mongo/postTasks */ export default async function postTasks() { log("Post tasks...") log("Loading cached info from DDNet...") const cache = decodeMsgpack() log("Adding total amounts of finishes to maps...") for (const category in cache.maps) { for (const i in cache.maps[category]) { const map = cache.maps[category][i] const mapFromDB = await Level.findOne({ name: map[0] }) if (!mapFromDB) continue mapFromDB.totalFinishes = map[2] mapFromDB.save() log(`Processed ${category} map ${i + 1}/${cache.maps[category].length} -> «${map[0]}» with ${map[2]} finishes!`) } } log("Processing points for players...") for (const i in cache.pointsRanks) { const entry = cache.pointsRanks[i] const playerFromDB = await Player.findOne({ name: entry[0] }) if (!playerFromDB) continue playerFromDB.points = entry[1] playerFromDB.save() log(`Processed player ${i + 1}/${cache.pointsRanks.length} -> «${entry[0]}» has ${entry[1]} points!`) } log("Processing rank points for players...") for (const i in cache.rankPoints) { const entry = cache.rankPoints[i] const playerFromDB = await Player.findOne({ name: entry[0] }) if (!playerFromDB) continue playerFromDB.rankPoints = entry[1] playerFromDB.save() log(`Processed player ${i + 1}/${cache.pointsRanks.length} -> «${entry[0]}» has ${entry[1]} rank points!`) } log("Processing team points for players...") for (const i in cache.teamRankPoints) { const entry = cache.teamRankPoints[i] const playerFromDB = await Player.findOne({ name: entry[0] }) if (!playerFromDB) continue playerFromDB.teamPoints = entry[1] playerFromDB.save() log(`Processed player ${i + 1}/${cache.pointsRanks.length} -> «${entry[0]}» has ${entry[1]} team points!`) } log("Processing players' points for the last week...") for (const i of cache.pointsThisWeek) { const entry = cache.pointsThisWeek[i] const playerFromDB = await Player.findOne({ name: entry[0] }) if (!playerFromDB) continue playerFromDB.pointsThisWeek = entry[1] playerFromDB.save() log(`Processed player ${i + 1}/${cache.pointsRanks.length} -> «${entry[0]}» got ${entry[1]} points this week!`) } log("Processing players' points for the last month...") for (const i of cache.pointsThisMonth) { const entry = cache.pointsThisMonth[i] const playerFromDB = await Player.findOne({ name: entry[0] }) if (!playerFromDB) continue playerFromDB.pointsThisMonth = entry[1] playerFromDB.save() log(`Processed player ${i + 1}/${cache.pointsRanks.length} -> «${entry[0]}» got ${entry[1]} points this month!`) } }