fix: no judgements in pbs (lol)

This commit is contained in:
zk
2026-05-09 22:46:41 +01:00
parent c24eda6ffb
commit 2d989d6e7d
4 changed files with 44 additions and 16 deletions
@@ -80,6 +80,7 @@ export async function GetBestJubilityOnSongs(
pb.data,
pb.derived_data,
pb.calculated_data,
pb.judgements,
pb.ranking_value,
pb.ranking_value_tb1,
pb.ranking_value_tb2,
@@ -129,6 +129,7 @@ export async function GetBestRatingOnSongs(
pb.data,
pb.derived_data,
pb.calculated_data,
pb.judgements,
pb.ranking_value,
pb.ranking_value_tb1,
pb.ranking_value_tb2,
+7 -8
View File
@@ -15,6 +15,7 @@ export interface PbDocumentJoinRow {
data: unknown;
derived_data: unknown;
calculated_data: unknown;
judgements: unknown;
ranking_value: number;
ranking_value_tb1: number | null;
ranking_value_tb2: number | null;
@@ -61,6 +62,7 @@ export const SELECT_PB_DOCUMENT_JOIN = [
"pb.data",
"pb.derived_data",
"pb.calculated_data",
"pb.judgements",
"pb.ranking_value",
"pb.ranking_value_tb1",
"pb.ranking_value_tb2",
@@ -103,14 +105,11 @@ export async function ToPbScoreDocument(row: PbDocumentJoinRow): Promise<PBScore
})) as [PBReference, ...PBReference[]])
: [{ name: "Primary", scoreID: "unknown" }];
const scoreData = pgScoreDataToAPI(
row.chart_game as V3Game,
{
data: row.data,
derived: row.derived_data,
judgements: {},
} as Parameters<typeof pgScoreDataToAPI>[1],
);
const scoreData = pgScoreDataToAPI(row.chart_game as V3Game, {
data: row.data,
derived: row.derived_data,
judgements: row.judgements,
} as Parameters<typeof pgScoreDataToAPI>[1]);
const rawCd = row.calculated_data;
const cd = (rawCd ?? {}) as Record<string, unknown>;
+35 -8
View File
@@ -71,12 +71,13 @@ function metricValueFromPbRow(
v3Game: Game,
data: unknown,
derivedData: unknown,
judgements: unknown,
metricKey: string,
): number | null {
const scoreData = pgScoreDataToAPI(v3Game, {
data,
derived: derivedData,
judgements: {},
judgements,
} as PgScoreData<Game>);
const v = (scoreData as Record<string, unknown>)[metricKey];
return typeof v === "number" && !Number.isNaN(v) ? v : null;
@@ -240,7 +241,14 @@ export async function UpdatePlayersRivalRankings(userID: integer, game: V3Game)
const userPBs = await DB.selectFrom("pb")
.innerJoin("chart", "chart.id", "pb.chart_id")
.select(["pb.row_id", "pb.chart_id", "pb.data", "pb.derived_data", "pb.calculated_data"])
.select([
"pb.row_id",
"pb.chart_id",
"pb.data",
"pb.derived_data",
"pb.calculated_data",
"pb.judgements",
])
.where("pb.user_id", "=", userID)
.where("chart.game", "=", game)
.where("pb.lens", "is", null)
@@ -256,21 +264,34 @@ export async function UpdatePlayersRivalRankings(userID: integer, game: V3Game)
chart_id: string;
data: unknown;
derived_data: unknown;
judgements: unknown;
user_id: number;
}> = [];
if (rivalIDs.length > 0) {
rivalPBs = await DB.selectFrom("pb")
.select(["user_id", "chart_id", "data", "derived_data"])
.where("user_id", "in", rivalIDs)
.where("chart_id", "in", chartIds)
.where("lens", "is", null)
.select([
"pb.user_id",
"pb.chart_id",
"pb.data",
"pb.derived_data",
"pb.judgements",
])
.where("pb.user_id", "in", rivalIDs)
.where("pb.chart_id", "in", chartIds)
.where("pb.lens", "is", null)
.execute();
}
await Promise.all(
userPBs.map(async (pb) => {
const userVal = metricValueFromPbRow(game, pb.data, pb.derived_data, metricKey);
const userVal = metricValueFromPbRow(
game,
pb.data,
pb.derived_data,
pb.judgements,
metricKey,
);
if (userVal === null) {
return;
}
@@ -280,7 +301,13 @@ export async function UpdatePlayersRivalRankings(userID: integer, game: V3Game)
if (r.chart_id !== pb.chart_id) {
continue;
}
const rivalVal = metricValueFromPbRow(game, r.data, r.derived_data, metricKey);
const rivalVal = metricValueFromPbRow(
game,
r.data,
r.derived_data,
r.judgements,
metricKey,
);
if (rivalVal !== null && rivalVal > userVal) {
betterCount++;
}