fix(ssr): only use 1 network request to fetch map ids
All checks were successful
deploy / deploy (push) Successful in 58s

This commit is contained in:
Lee 2023-11-08 22:24:38 +00:00
parent 3dd2fc48ad
commit af707a8c79
2 changed files with 26 additions and 21 deletions

View File

@ -19,14 +19,15 @@ export async function GET(request: Request) {
const map = await BeatsaverAPI.fetchMapByHash(mapHash);
if (map) {
maps[mapHash] = map;
mapCache.set(mapHash, map);
}
if (map && idOnly) {
maps[mapHash] = { id: map.id };
}
}
return new Response(JSON.stringify(maps), {
headers: { "content-type": "application/json;charset=UTF-8" },
});
}
return new Response(JSON.stringify(maps), {
headers: { "content-type": "application/json;charset=UTF-8" },
});
}

View File

@ -162,24 +162,28 @@ async function fetchScoresWithBeatsaverData(
string,
ScoresaberScoreWithBeatsaverData
> = {};
let url = `${
isProduction() ? ssrSettings.siteUrl : "http://localhost:3000"
}/api/beatsaver/mapdata?hashes=`;
for (const score of scores) {
const mapResponse = await fetch(
`${
isProduction() ? ssrSettings.siteUrl : "http://localhost:3000"
}/api/beatsaver/mapdata?hashes=${score.leaderboard.songHash}&idonly=true`,
{
next: {
revalidate: 60 * 60 * 24 * 7, // 1 week
},
},
);
const mapData = await mapResponse.json();
const mapId = mapData[score.leaderboard.songHash].id;
scoresWithBeatsaverData[score.score.id] = {
score: score.score,
leaderboard: score.leaderboard,
mapId: mapId,
};
url += `${score.leaderboard.songHash},`;
}
const mapResponse = await fetch(url, {
next: {
revalidate: 60 * 60 * 24 * 7, // 1 week
},
});
const mapJson = await mapResponse.json();
for (const score of scores) {
const mapData = mapJson[score.leaderboard.songHash];
if (mapData) {
scoresWithBeatsaverData[score.leaderboard.songHash] = {
score: score.score,
leaderboard: score.leaderboard,
mapId: mapData.id,
};
}
}
return {