Change the way stuff works with launcher endpoint

This commit is contained in:
2025-11-03 10:06:32 -07:00
parent 642aebad98
commit c2cebfd53e
4 changed files with 49 additions and 10 deletions

View File

@@ -1,9 +1,26 @@
import { MySql2Database } from "drizzle-orm/mysql2";
import { launcherGames, launcherVersions } from "../../lib/tables";
import { eq } from "drizzle-orm";
import { asc, desc, eq } from "drizzle-orm";
import { jsonResponse } from "../../lib/util";
import { Context } from "elysia";
export async function handler(context: Context, db: MySql2Database) {
const platform = context.query.platform as string | undefined
const arch = context.query.arch as string | undefined
let showAll = false
if (!platform || !arch) {
showAll = true
}
let platString = platform
if (!showAll) {
if (platform == "windows") {
if (arch == "x86_64") platString = "windows"
else if (arch == "aarch64") platString = "windows-arm64"
}
}
export async function handler(db: MySql2Database) {
const versionsRaw = await db.select({
id: launcherVersions.id,
versionName: launcherVersions.versionName,
@@ -11,16 +28,36 @@ export async function handler(db: MySql2Database) {
downloadUrls: launcherVersions.downloadUrls,
platforms: launcherVersions.platforms,
executables: launcherVersions.executables,
game: launcherVersions.game,
place: launcherVersions.place
}).from(launcherVersions).where(eq(launcherVersions.hidden, false)).execute()
game: launcherVersions.game
}).from(launcherVersions)
.where(eq(launcherVersions.hidden, false))
.orderBy(
asc(launcherVersions.game),
desc(launcherVersions.place)
)
.execute()
const versions = versionsRaw.map(v => ({
...v,
downloadUrls: JSON.parse(v.downloadUrls),
platforms: JSON.parse(v.platforms),
executables: JSON.parse(v.executables)
executables: JSON.parse(v.executables),
downloadUrl: null as string | null,
executable: null as string | null
}))
.filter(v => {
if (showAll) return true
const i = v.platforms.indexOf(platString)
if (i !== -1) {
v.downloadUrl = v.downloadUrls[i]
v.executable = v.executables[i]
delete v.downloadUrls
delete v.platforms
delete v.executables
return true
}
return false
})
const gamesRaw = await db.select().from(launcherGames).execute()