fix bugs related to bppb

This commit is contained in:
zkldi
2021-04-29 23:16:38 +01:00
parent 1c9ab4fdde
commit 28953f0eca
@@ -7,12 +7,13 @@ export async function IIDXMergeFn(
scorePB: ScoreDocument<"iidx:SP" | "iidx:DP">,
lampPB: ScoreDocument<"iidx:SP" | "iidx:DP">,
logger: KtLogger
) {
): Promise<boolean> {
// bad+poor PB document. This is a weird, third indepdenent metric that IIDX players sometimes care about.
let bpPB = (await db.scores.findOne(
{
userID: scorePB.userID,
chartID: scorePB.chartID,
"scoreData.hitMeta.bp": { $exists: true },
},
{
sort: {
@@ -22,27 +23,28 @@ export async function IIDXMergeFn(
)) as ScoreDocument<"iidx:SP" | "iidx:DP">;
if (!bpPB) {
logger.warn(
`Could not find BP PB for ${scorePB.userID} ${scorePB.chartID} in PB joining.`,
logger.verbose(
`Could not find BP PB for ${scorePB.userID} ${scorePB.chartID} in PB joining. User likely has no scores with BP defined.`,
{ pbDoc }
);
return;
// this isn't actually an error! we just don't have to do anything.
return true;
}
// by default scorePB is chosen for hitMeta fields, so, we can skip any assignments here by returning here.
if (bpPB.scoreID === scorePB.scoreID) {
logger.debug(`Skipped merging BP PB as scorePB was also BP PB.`);
return;
return true;
} else if (bpPB.scoreID === lampPB.scoreID) {
pbDoc.scoreData.hitMeta.bp = lampPB.scoreData.hitMeta.bp;
// dfgmdfgfgdgf
logger.verbose(`Skipped adding BP PB as composedFrom because lampPB was also BP PB.`);
return;
return true;
}
pbDoc.scoreData.hitMeta.bp = bpPB.scoreData.hitMeta.bp;
pbDoc.composedFrom.other = [{ name: "Best BP", scoreID: bpPB.scoreID }];
return;
return true;
}