Merge pull request #575 from TNG-dev/hotfix-optimise-update-score

This commit is contained in:
zkldi
2021-12-09 12:29:34 +00:00
committed by GitHub
+11 -7
View File
@@ -2,6 +2,7 @@
import db from "external/mongo/db";
import { KtLogger, rootLogger } from "lib/logger/logger";
import { CreateCalculatedData } from "lib/score-import/framework/calculated-data/calculated-data";
import { UpdateChartRanking } from "lib/score-import/framework/pb/create-pb-doc";
import { CreateScoreID } from "lib/score-import/framework/score-importing/score-id";
import { ScoreDocument } from "tachi-common";
import { UpdateAllPBs } from "utils/calculations/recalc-scores";
@@ -56,7 +57,7 @@ export default async function UpdateScore(oldScore: ScoreDocument, newScore: Sco
context: ["Update Score", oldScore.scoreID, newScore.scoreID, FormatUserDoc(user)],
}) as KtLogger;
logger.info("Received Update Score request.");
logger.verbose("Received Update Score request.");
newScore.calculatedData = await CreateCalculatedData(
newScore,
@@ -82,7 +83,7 @@ export default async function UpdateScore(oldScore: ScoreDocument, newScore: Sco
"scoreInfo.scoreID": oldScoreID,
});
logger.info(`Updating ${sessions.length} sessions.`);
logger.verbose(`Updating ${sessions.length} sessions.`);
// For every session that interacts with this score ID (there should only ever be one)
for (const session of sessions) {
@@ -117,24 +118,27 @@ export default async function UpdateScore(oldScore: ScoreDocument, newScore: Sco
);
}
logger.info(`Updating PBs.`);
logger.verbose(`Updating PBs.`);
// Update the PBs to reference properly.
// We run updateAllPbs on just the modified chart -- the reason
// for this is to update ranking info incase that might fall out of
// sync as a result.
await UpdateAllPBs(undefined, {
await UpdateAllPBs([userID], {
chartID: newScore.chartID,
});
await UpdateAllPBs(undefined, {
await UpdateAllPBs([userID], {
chartID: oldScore.chartID,
});
await UpdateChartRanking(newScore.chartID);
await UpdateChartRanking(oldScore.chartID);
const imports = await db.imports.find({
scoreIDs: oldScoreID,
});
logger.info(`Updating ${imports.length} imports.`);
logger.verbose(`Updating ${imports.length} imports.`);
for (const importDoc of imports) {
await db.imports.update(
@@ -149,5 +153,5 @@ export default async function UpdateScore(oldScore: ScoreDocument, newScore: Sco
);
}
logger.info(`Done updating score.`);
logger.verbose(`Done updating score.`);
}