Merge pull request #631 from TNG-dev/zkldi/store-sv6-exscore

This commit is contained in:
zkldi
2022-08-17 22:45:45 +01:00
committed by GitHub
6 changed files with 40 additions and 14 deletions
+1
View File
@@ -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;
@@ -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;
}
@@ -39,6 +39,7 @@ t.test("#ConverterIRKsHookSV6C", (t) => {
},
hitMeta: {
maxCombo: 158,
exScore: 1334,
},
},
game: "sdvx",
@@ -57,6 +57,7 @@ export const ConverterIRKsHookSV6C: ConverterFunction<KsHookSV6CScore, KsHookSV6
hitMeta: {
gauge: data.gauge / 100,
maxCombo: data.max_chain,
exScore: data.ex_score,
},
},
scoreMeta: {},
+1 -1
View File
@@ -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;
+14 -13
View File
@@ -265,20 +265,21 @@ export function IsRecord(maybeRecord: unknown): maybeRecord is Record<string, un
* Wrap a promise in an error handler that exits the process safely, and logs
* when it completes.
*/
export async function WrapScriptPromise(promise: Promise<unknown>, logger: KtLogger) {
export function WrapScriptPromise(promise: Promise<unknown>, 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);
});
});
}