From c3d888b84d3cc36a5dcb916b0f1d1ed7c9f6d48e Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Wed, 17 Aug 2022 18:44:23 +0100 Subject: [PATCH 1/3] feat: store exScore from sv6c imports --- common/src/types.ts | 1 + .../score-import/import-types/ir/kshook-sv6c/converter.test.ts | 1 + .../lib/score-import/import-types/ir/kshook-sv6c/converter.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/common/src/types.ts b/common/src/types.ts index f7b82ddfc..f2638b558 100644 --- a/common/src/types.ts +++ b/common/src/types.ts @@ -1136,6 +1136,7 @@ export interface HitMetaLookup { }; "sdvx:Single": BASE_VALID_HIT_META & { gauge: number | null; + exScore: number | null; }; "usc:Controller": USCHitMeta; "usc:Keyboard": USCHitMeta; diff --git a/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.test.ts b/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.test.ts index 564fb0246..010f6a712 100644 --- a/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.test.ts +++ b/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.test.ts @@ -39,6 +39,7 @@ t.test("#ConverterIRKsHookSV6C", (t) => { }, hitMeta: { maxCombo: 158, + exScore: 1334, }, }, game: "sdvx", diff --git a/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.ts b/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.ts index d004b00d5..b69ecafdb 100644 --- a/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.ts +++ b/server/src/lib/score-import/import-types/ir/kshook-sv6c/converter.ts @@ -57,6 +57,7 @@ export const ConverterIRKsHookSV6C: ConverterFunction Date: Wed, 17 Aug 2022 19:53:49 +0100 Subject: [PATCH 2/3] feat: track bestExScore in PBs --- .../framework/pb/game-specific-merge.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/src/lib/score-import/framework/pb/game-specific-merge.ts b/server/src/lib/score-import/framework/pb/game-specific-merge.ts index d23f4a4fc..802ca6ee6 100644 --- a/server/src/lib/score-import/framework/pb/game-specific-merge.ts +++ b/server/src/lib/score-import/framework/pb/game-specific-merge.ts @@ -1,3 +1,4 @@ +/* eslint-disable require-atomic-updates */ import { InternalFailure } from "../common/converter-failures"; import db from "external/mongo/db"; import { Volforce } from "rg-stats"; @@ -139,5 +140,26 @@ export async function SDVXMergeFn( chart.levelNum ); + // find the users score with the highest exScore + const bestExScore = (await db.scores.findOne( + { + chartID: pbDoc.chartID, + "scoreData.hitMeta.exScore": { $type: "number" }, + }, + { + sort: { + "scoreData.hitMeta.exScore": -1, + }, + } + )) as ScoreDocument<"sdvx:Single"> | null; + + if (!bestExScore) { + pbDoc.scoreData.hitMeta.exScore = undefined; + } else { + pbDoc.scoreData.hitMeta.exScore = bestExScore.scoreData.hitMeta.exScore; + + pbDoc.composedFrom.other = [{ name: "exScorePB", scoreID: bestExScore.scoreID }]; + } + return true; } From bb919fc524b1c71e648fddbf116f7f6543b9c92f Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Wed, 17 Aug 2022 20:29:19 +0100 Subject: [PATCH 3/3] fix: don't return a promise from wrapscriptpromise --- server/src/lib/score-import/worker/queue.ts | 2 +- server/src/utils/misc.ts | 27 +++++++++++---------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/server/src/lib/score-import/worker/queue.ts b/server/src/lib/score-import/worker/queue.ts index 642bfdc35..f1f903b75 100644 --- a/server/src/lib/score-import/worker/queue.ts +++ b/server/src/lib/score-import/worker/queue.ts @@ -6,7 +6,7 @@ const ScoreImportQueue = new Queue(`${TachiConfig.NAME} Score Import Queue`, { defaultJobOptions: { removeOnComplete: true, removeOnFail: 10, // keep the last 10 failed jobs, but start pruning beyond that. - } + }, }); export default ScoreImportQueue; diff --git a/server/src/utils/misc.ts b/server/src/utils/misc.ts index cdfb1c1b4..5d8088bb5 100644 --- a/server/src/utils/misc.ts +++ b/server/src/utils/misc.ts @@ -265,20 +265,21 @@ export function IsRecord(maybeRecord: unknown): maybeRecord is Record, logger: KtLogger) { +export function WrapScriptPromise(promise: Promise, logger: KtLogger) { let code = 0; - try { - await promise; + void promise + .then(() => { + logger.info(`Finished executing.`); + }) + .catch((err: Error) => { + logger.error(`Failed executing.`, { err }); - logger.info(`Finished executing.`); - } catch (err) { - logger.error(`Failed executing.`, { err }); - - code = 1; - } - - logger.end(() => { - process.exit(code); - }); + code = 1; + }) + .finally(() => { + logger.end(() => { + process.exit(code); + }); + }); }