mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-03-21 17:44:49 -05:00
feat(servers): use the server a tier below if it does not exist
If a server does not exist in a tier, use the tier below it. For example, if a user is in the test access level, but a server for that game only exists on prod, use that server. Same for the dev access level, but it goes dev --> test --> prod
This commit is contained in:
parent
6802d39bed
commit
ed780efb1e
|
|
@ -22,6 +22,12 @@ const discordConnectionSchema = joi.object({
|
|||
id: joi.string()
|
||||
});
|
||||
|
||||
const accessModeOrder: Record<string, string[]> = {
|
||||
prod: ['prod'],
|
||||
test: ['test', 'prod'],
|
||||
dev: ['dev', 'test', 'prod']
|
||||
};
|
||||
|
||||
let _connection: mongoose.Connection;
|
||||
|
||||
export async function connect(): Promise<void> {
|
||||
|
|
@ -206,24 +212,48 @@ export async function getPNIDProfileJSONByPID(pid: number): Promise<PNIDProfile
|
|||
}
|
||||
|
||||
export async function getServerByGameServerID(gameServerID: string, accessMode: string): Promise<HydratedServerDocument | null> {
|
||||
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<HydratedServerDocument | null> {
|
||||
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<HydratedServerDocument | null> {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user