From 9acc71fa130b15a4d507ec2c2a3c7802b6f2aa23 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Tue, 27 Jan 2026 09:32:00 -0700 Subject: [PATCH] Add subcategories and last revision date to launcher manifest --- database/lncvrtgames.sql | 9 ++++++--- src/lib/tables.ts | 7 +++++-- src/routes/launcher/versions.ts | 13 ++++++++++--- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/database/lncvrtgames.sql b/database/lncvrtgames.sql index 37cd02d..68aa965 100644 --- a/database/lncvrtgames.sql +++ b/database/lncvrtgames.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Host: localhost --- Generation Time: Jan 24, 2026 at 03:57 AM +-- Generation Time: Jan 27, 2026 at 04:31 PM -- Server version: 12.1.2-MariaDB -- PHP Version: 8.5.2 @@ -32,7 +32,8 @@ CREATE TABLE `games` ( `name` text NOT NULL, `official` tinyint(1) NOT NULL DEFAULT 0, `verified` tinyint(1) NOT NULL DEFAULT 0, - `developer` varchar(32) DEFAULT NULL + `developer` varchar(32) DEFAULT NULL, + `subcategoryNames` text NOT NULL DEFAULT '{}' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci; -- -------------------------------------------------------- @@ -69,7 +70,9 @@ CREATE TABLE `launcherversionmanifest` ( `place` bigint(20) NOT NULL DEFAULT 0, `sha512sums` text NOT NULL DEFAULT '[]', `sizes` text NOT NULL DEFAULT '\'[]\'', - `changelog` text DEFAULT NULL + `changelog` text DEFAULT NULL, + `subcategory` int(11) NOT NULL DEFAULT -1, + `lastRevision` bigint(20) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPRESSED; -- -------------------------------------------------------- diff --git a/src/lib/tables.ts b/src/lib/tables.ts index 084ea1e..8c5ad1d 100644 --- a/src/lib/tables.ts +++ b/src/lib/tables.ts @@ -44,7 +44,8 @@ export const games = mysqlTable('games', { name: text('name').notNull(), official: boolean('official').default(false).notNull(), verified: boolean('verified').default(false).notNull(), - developer: varchar('developer', { length: 32 }) + developer: varchar('developer', { length: 32 }), + subcategoryNames: text('subcategoryNames').default('{}').notNull() }) export const launcherVersionManifest = mysqlTable('launcherversionmanifest', { @@ -62,7 +63,9 @@ export const launcherVersionManifest = mysqlTable('launcherversionmanifest', { place: bigint('place', { mode: 'number' }).default(0).notNull(), sha512sums: text('sha512sums').default('[]').notNull(), sizes: text('sizes').default('[]').notNull(), - changelog: text('changelog') + changelog: text('changelog'), + subcategory: int('subcategory').notNull().default(-1), + lastRevision: bigint('lastRevision', { mode: 'number' }).notNull().default(0) }) export const verifyCodes = mysqlTable('verifycodes', { diff --git a/src/routes/launcher/versions.ts b/src/routes/launcher/versions.ts index aa2ea8c..e6296b7 100644 --- a/src/routes/launcher/versions.ts +++ b/src/routes/launcher/versions.ts @@ -82,7 +82,9 @@ export async function handler (context: Context) { sha512sums: launcherVersionManifest.sha512sums, sizes: launcherVersionManifest.sizes, place: launcherVersionManifest.place, - changelog: launcherVersionManifest.changelog + changelog: launcherVersionManifest.changelog, + subcategory: launcherVersionManifest.subcategory, + lastRevision: launcherVersionManifest.lastRevision }) .from(launcherVersionManifest) .where(eq(launcherVersionManifest.hidden, false)) @@ -147,9 +149,14 @@ export async function handler (context: Context) { return false }) - const gameList = await db.select().from(games).execute() + const gamesListRaw = await db.select().from(games).execute() + + const gamesList = gamesListRaw.map(v => ({ + ...v, + subcategoryNames: JSON.parse(v.subcategoryNames) + })) connection.end() - return jsonResponse({ versions, games: gameList }) + return jsonResponse({ versions, games: gamesList }) }