fix(servers): use find query to lessen db load

This commit is contained in:
Andrea Toska 2025-01-31 17:03:03 +01:00
parent ed780efb1e
commit c769cf3d23

View File

@ -212,14 +212,15 @@ export async function getPNIDProfileJSONByPID(pid: number): Promise<PNIDProfile
}
export async function getServerByGameServerID(gameServerID: string, accessMode: string): Promise<HydratedServerDocument | null> {
const searchModes = accessModeOrder[accessMode] || ['prod'];
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod; // Default to prod if invalid mode
const servers = await Server.find({
game_server_id: gameServerID,
access_mode: { $in: searchModes }
})
for (const mode of searchModes) {
const server = await Server.findOne({
game_server_id: gameServerID,
access_mode: mode
});
const server = servers.find(s => s.access_mode === mode);
if (server) return server;
}
@ -227,14 +228,15 @@ export async function getServerByGameServerID(gameServerID: string, accessMode:
}
export async function getServerByTitleID(titleID: string, accessMode: string): Promise<HydratedServerDocument | null> {
const searchModes = accessModeOrder[accessMode] || ['prod'];
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod;
const servers = await Server.find({
title_ids: titleID,
access_mode: { $in: searchModes }
})
for (const mode of searchModes) {
const server = await Server.findOne({
title_ids: titleID,
access_mode: mode
});
const server = servers.find(s => s.access_mode === mode);
if (server) return server;
}
@ -242,21 +244,21 @@ export async function getServerByTitleID(titleID: string, accessMode: string): P
}
export async function getServerByClientID(clientID: string, accessMode: string): Promise<HydratedServerDocument | null> {
const searchModes = accessModeOrder[accessMode] || ['prod'];
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod;
const servers = await Server.find({
client_id: clientID,
access_mode: { $in: searchModes }
})
for (const mode of searchModes) {
const server = await Server.findOne({
client_id: clientID,
access_mode: mode
});
const server = servers.find(s => s.access_mode === mode);
if (server) return server;
}
return null;
}
export async function addPNIDConnection(pnid: HydratedPNIDDocument, data: ConnectionData, type: string): Promise<ConnectionResponse | undefined> {
if (type === 'discord') {
return await addPNIDConnectionDiscord(pnid, data);