Skip to content

Commit

Permalink
Merge pull request #158 from AToska21/return-server
Browse files Browse the repository at this point in the history
Return the server a tier below if it does not exist
  • Loading branch information
binaryoverload authored Jan 31, 2025
2 parents 6802d39 + 8604d19 commit 1653b09
Showing 1 changed file with 39 additions and 7 deletions.
46 changes: 39 additions & 7 deletions src/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down Expand Up @@ -206,26 +212,52 @@ export async function getPNIDProfileJSONByPID(pid: number): Promise<PNIDProfile
}

export async function getServerByGameServerID(gameServerID: string, accessMode: string): Promise<HydratedServerDocument | null> {
return await Server.findOne({
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod; // Default to prod if invalid mode

const servers = await Server.find({
game_server_id: gameServerID,
access_mode: accessMode
access_mode: { $in: searchModes }
});

for (const mode of searchModes) {
const server = servers.find(s => s.access_mode === mode);
if (server) return server;
}

return null;
}

export async function getServerByTitleID(titleID: string, accessMode: string): Promise<HydratedServerDocument | null> {
return await Server.findOne({
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod;

const servers = await Server.find({
title_ids: titleID,
access_mode: accessMode
access_mode: { $in: searchModes }
});

for (const mode of searchModes) {
const server = servers.find(s => s.access_mode === mode);
if (server) return server;
}

return null;
}

export async function getServerByClientID(clientID: string, accessMode: string): Promise<HydratedServerDocument | null> {
return await Server.findOne({
const searchModes = accessModeOrder[accessMode] ?? accessModeOrder.prod;

const servers = await Server.find({
client_id: clientID,
access_mode: accessMode
access_mode: { $in: searchModes }
});
}

for (const mode of searchModes) {
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') {
Expand Down

0 comments on commit 1653b09

Please sign in to comment.