mirror of
https://github.com/zkldi/Tachi.git
synced 2026-10-11 00:38:28 +03:00
Merge pull request #631 from TNG-dev/zkldi/store-sv6-exscore
This commit is contained in:
@@ -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: {},
|
||||
|
||||
@@ -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
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user