ddstats-server/libs/database/sqlite2mongo/postTasks.js

30 lines
1.1 KiB
JavaScript
Raw Normal View History

2021-10-06 19:52:40 +02:00
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 { sqlite } from '../init.js'
const log = initLog("sqlite2mongo")
2021-10-06 20:36:20 +02:00
/**
* This handles some post-tasks that run after the initial checks.
* @module libs/database/sqlite2mongo/postTasks
*/
2021-10-06 19:52:40 +02:00
export default async function postTasks() {
log("Post tasks...")
log("Calculating player points...")
const playerAmount = await Player.find({}).count()
const playerAgg = Player.aggregate([])
let processedPlayers = 0
for await (const player of playerAgg) {
const points = (await sqlite.get(`SELECT sum(Points) FROM maps JOIN (SELECT DISTINCT Map FROM race WHERE Name = "${player.name}") AS r ON maps.Map = r.Map`))['sum(Points)']
player.points = points
Player.updateOne({ name: player.name }, { rankPoints: points }, () => log(`Task ${processedPlayers}/${playerAmount} >> Player «${player.name}» has ${points} points!`))
++processedPlayers
}
log("Done calculating points!")
}