mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-03 12:29:46 +08:00
added little worker file to run operations on the database
This commit is contained in:
parent
5457da7484
commit
f15e0b931d
1 changed files with 75 additions and 0 deletions
75
backend/worker.js
Normal file
75
backend/worker.js
Normal file
|
@ -0,0 +1,75 @@
|
|||
const express = require("express");
|
||||
const { config } = require("dotenv");
|
||||
const path = require("path");
|
||||
const MonkeyError = require("./handlers/error");
|
||||
config({ path: path.join(__dirname, ".env") });
|
||||
|
||||
const cors = require("cors");
|
||||
const admin = require("firebase-admin");
|
||||
|
||||
const serviceAccount = require("./credentials/serviceAccountKey.json");
|
||||
const { connectDB, mongoDB } = require("./init/mongodb");
|
||||
|
||||
const PORT = process.env.PORT || 5005;
|
||||
|
||||
async function main() {
|
||||
await connectDB();
|
||||
await admin.initializeApp({
|
||||
credential: admin.credential.cert(serviceAccount),
|
||||
});
|
||||
console.log("Database Connected");
|
||||
refactor();
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
async function refactor() {
|
||||
console.log("getting all users");
|
||||
let users = await mongoDB().collection("users").find({}).toArray();
|
||||
console.log(users.length);
|
||||
for (let user of users) {
|
||||
let obj = user.personalBests;
|
||||
|
||||
lbPb = {
|
||||
time: {
|
||||
15: {},
|
||||
60: {},
|
||||
},
|
||||
};
|
||||
let bestForEveryLanguage = {};
|
||||
if (obj?.time?.[15]) {
|
||||
obj.time[15].forEach((pb) => {
|
||||
if (!bestForEveryLanguage[pb.language]) {
|
||||
bestForEveryLanguage[pb.language] = pb;
|
||||
} else {
|
||||
if (bestForEveryLanguage[pb.language].wpm < pb.wpm) {
|
||||
bestForEveryLanguage[pb.language] = pb;
|
||||
}
|
||||
}
|
||||
});
|
||||
Object.keys(bestForEveryLanguage).forEach((key) => {
|
||||
lbPb.time[15][key] = bestForEveryLanguage[key];
|
||||
});
|
||||
bestForEveryLanguage = {};
|
||||
}
|
||||
if (obj?.time?.[60]) {
|
||||
obj.time[60].forEach((pb) => {
|
||||
if (!bestForEveryLanguage[pb.language]) {
|
||||
bestForEveryLanguage[pb.language] = pb;
|
||||
} else {
|
||||
if (bestForEveryLanguage[pb.language].wpm < pb.wpm) {
|
||||
bestForEveryLanguage[pb.language] = pb;
|
||||
}
|
||||
}
|
||||
});
|
||||
Object.keys(bestForEveryLanguage).forEach((key) => {
|
||||
lbPb.time[60][key] = bestForEveryLanguage[key];
|
||||
});
|
||||
}
|
||||
|
||||
await mongoDB()
|
||||
.collection("users")
|
||||
.updateOne({ _id: user._id }, { $set: { lbPersonalBests: lbPb } });
|
||||
console.log(`updated ${user.name}`);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue