From 2d989d6e7d3a5d138b5eaefae5ccfa79707ece06 Mon Sep 17 00:00:00 2001 From: zk Date: Sat, 9 May 2026 22:46:41 +0100 Subject: [PATCH] fix: no judgements in pbs (lol) --- .../src/game-implementations/games/jubeat.ts | 1 + .../utils/profile-calc.ts | 1 + typescript/server/src/lib/db-formats/pb.ts | 15 +++---- typescript/server/src/lib/rivals/rivals.ts | 43 +++++++++++++++---- 4 files changed, 44 insertions(+), 16 deletions(-) diff --git a/typescript/server/src/game-implementations/games/jubeat.ts b/typescript/server/src/game-implementations/games/jubeat.ts index 8e5727d62..829932841 100644 --- a/typescript/server/src/game-implementations/games/jubeat.ts +++ b/typescript/server/src/game-implementations/games/jubeat.ts @@ -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, diff --git a/typescript/server/src/game-implementations/utils/profile-calc.ts b/typescript/server/src/game-implementations/utils/profile-calc.ts index 90bb5fc6f..568d5f769 100644 --- a/typescript/server/src/game-implementations/utils/profile-calc.ts +++ b/typescript/server/src/game-implementations/utils/profile-calc.ts @@ -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, diff --git a/typescript/server/src/lib/db-formats/pb.ts b/typescript/server/src/lib/db-formats/pb.ts index 4dbe1f46b..46712f928 100644 --- a/typescript/server/src/lib/db-formats/pb.ts +++ b/typescript/server/src/lib/db-formats/pb.ts @@ -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[1], - ); + const scoreData = pgScoreDataToAPI(row.chart_game as V3Game, { + data: row.data, + derived: row.derived_data, + judgements: row.judgements, + } as Parameters[1]); const rawCd = row.calculated_data; const cd = (rawCd ?? {}) as Record; diff --git a/typescript/server/src/lib/rivals/rivals.ts b/typescript/server/src/lib/rivals/rivals.ts index 54edcb0af..21a9104ec 100644 --- a/typescript/server/src/lib/rivals/rivals.ts +++ b/typescript/server/src/lib/rivals/rivals.ts @@ -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); const v = (scoreData as Record)[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++; }