diff --git a/src/database.ts b/src/database.ts index b6d443e..e250717 100644 --- a/src/database.ts +++ b/src/database.ts @@ -22,6 +22,12 @@ const discordConnectionSchema = joi.object({ id: joi.string() }); +const accessModeOrder: Record = { + prod: ['prod'], + test: ['test', 'prod'], + dev: ['dev', 'test', 'prod'] +}; + let _connection: mongoose.Connection; export async function connect(): Promise { @@ -206,24 +212,48 @@ export async function getPNIDProfileJSONByPID(pid: number): Promise { - return await Server.findOne({ - game_server_id: gameServerID, - access_mode: accessMode - }); + const searchModes = accessModeOrder[accessMode] || ['prod']; + + for (const mode of searchModes) { + const server = await Server.findOne({ + game_server_id: gameServerID, + access_mode: mode + }); + + if (server) return server; + } + + return null; } export async function getServerByTitleID(titleID: string, accessMode: string): Promise { - return await Server.findOne({ - title_ids: titleID, - access_mode: accessMode - }); + const searchModes = accessModeOrder[accessMode] || ['prod']; + + for (const mode of searchModes) { + const server = await Server.findOne({ + title_ids: titleID, + access_mode: mode + }); + + if (server) return server; + } + + return null; } export async function getServerByClientID(clientID: string, accessMode: string): Promise { - return await Server.findOne({ - client_id: clientID, - access_mode: accessMode - }); + const searchModes = accessModeOrder[accessMode] || ['prod']; + + for (const mode of searchModes) { + const server = await Server.findOne({ + client_id: clientID, + access_mode: mode + }); + + if (server) return server; + } + + return null; }