From 6947c30c23e4dd8007cfdf1e3c7b342c287e8d8e Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 12 Oct 2024 02:36:44 +0100 Subject: [PATCH] fix double fetching of players --- projects/backend/src/index.ts | 4 ++-- projects/backend/src/service/player.service.ts | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/projects/backend/src/index.ts b/projects/backend/src/index.ts index e433212..ed45ff6 100644 --- a/projects/backend/src/index.ts +++ b/projects/backend/src/index.ts @@ -37,7 +37,7 @@ app.use( timezone: "Europe/London", run: async () => { const pages = 10; - const cooldown = 60_000 / 200; // 200 requests per minute + const cooldown = 60_000 / 250; // 250 requests per minute let toTrack: PlayerDocument[] = await PlayerModel.find({}); const toRemoveIds: string[] = []; @@ -54,7 +54,7 @@ app.use( continue; } for (const player of page.players) { - const foundPlayer = await PlayerService.getPlayer(player.id, true); + const foundPlayer = await PlayerService.getPlayer(player.id, true, player); await PlayerService.trackScoreSaberPlayer(foundPlayer, player); toRemoveIds.push(foundPlayer.id); } diff --git a/projects/backend/src/service/player.service.ts b/projects/backend/src/service/player.service.ts index 89d608c..a1200ba 100644 --- a/projects/backend/src/service/player.service.ts +++ b/projects/backend/src/service/player.service.ts @@ -11,14 +11,19 @@ export class PlayerService { * * @param id the player to fetch * @param create if true, create the player if it doesn't exist + * @param playerToken an optional player token for the player * @returns the player * @throws NotFoundError if the player is not found */ - public static async getPlayer(id: string, create: boolean = false): Promise { + public static async getPlayer( + id: string, + create: boolean = false, + playerToken?: ScoreSaberPlayerToken + ): Promise { let player: PlayerDocument | null = await PlayerModel.findById(id); if (player === null) { // If create is on, create the player, otherwise return unknown player - const playerToken = create ? await scoresaberService.lookupPlayer(id) : undefined; + playerToken = create ? (playerToken ? playerToken : await scoresaberService.lookupPlayer(id)) : undefined; if (playerToken === undefined) { throw new NotFoundError(`Player "${id}" not found`); }