From 4533cd8bfaf4e184497d055b3b7e0081a20c50af Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Sun, 30 Jan 2022 21:20:08 +0000 Subject: [PATCH] Add support for saving custom tables. --- .../v1/games/_game/_playtype/tables/router.ts | 4 ++-- .../games/_game/_playtype/settings/router.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/server/src/server/router/api/v1/games/_game/_playtype/tables/router.ts b/server/src/server/router/api/v1/games/_game/_playtype/tables/router.ts index 57d451d3f..37a45c69b 100644 --- a/server/src/server/router/api/v1/games/_game/_playtype/tables/router.ts +++ b/server/src/server/router/api/v1/games/_game/_playtype/tables/router.ts @@ -1,10 +1,10 @@ import { Router } from "express"; import db from "external/mongo/db"; import { SYMBOL_TachiData } from "lib/constants/tachi"; -import { GetTableFromParam } from "./middleware"; -import { GetFoldersFromTable } from "utils/folder"; import { FilterQuery } from "mongodb"; import { TableDocument } from "tachi-common"; +import { GetFoldersFromTable } from "utils/folder"; +import { GetTableFromParam } from "./middleware"; const router: Router = Router({ mergeParams: true }); diff --git a/server/src/server/router/api/v1/users/_userID/games/_game/_playtype/settings/router.ts b/server/src/server/router/api/v1/users/_userID/games/_game/_playtype/settings/router.ts index 98e04b489..8c581b225 100644 --- a/server/src/server/router/api/v1/users/_userID/games/_game/_playtype/settings/router.ts +++ b/server/src/server/router/api/v1/users/_userID/games/_game/_playtype/settings/router.ts @@ -35,6 +35,7 @@ router.patch( preferredScoreAlg: p.optional(p.nullable(p.isIn(gptConfig.scoreRatingAlgs))), preferredSessionAlg: p.optional(p.nullable(p.isIn(gptConfig.sessionRatingAlgs))), preferredProfileAlg: p.optional(p.nullable(p.isIn(gptConfig.profileRatingAlgs))), + defaultTable: "*?string", // This is a pretty stupid IIFE level hack, ah well. gameSpecific: p.any, scoreBucket: optNull(p.isIn("grade", "lamp")), @@ -71,6 +72,21 @@ router.patch( } } + if (typeof req.body.preferredTable === "string") { + const table = await db.tables.findOne({ + game, + playtype, + tableID: req.body.preferredTable, + }); + + if (!table) { + return res.status(400).json({ + success: false, + description: `The requested table (${req.body.preferredTable}) does not exist.`, + }); + } + } + const updateQuery: Record = {}; // @warning Slightly icky dynamic prop assignment instead of copypasta.