From 1024d0350f92f2c784369ab8ba7bd6052e299ca7 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 30 Dec 2024 01:51:38 +0100 Subject: [PATCH 1/2] fix: consistenly use static/data for 'npm run build' (#661) --- src/controllers/api/loginController.ts | 2 +- src/controllers/dynamic/worldStateController.ts | 2 +- src/routes/cache.ts | 2 +- src/services/buildConfigService.ts | 13 +++++++++++++ 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 src/services/buildConfigService.ts diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 52d4d6ac..452cd61b 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -1,7 +1,7 @@ import { RequestHandler } from "express"; import { config } from "@/src/services/configService"; -import buildConfig from "@/static/data/buildConfig.json"; +import { buildConfig } from "@/src/services/buildConfigService"; import { Account } from "@/src/models/loginModel"; import { createAccount, isCorrectPassword, isNameTaken } from "@/src/services/loginService"; diff --git a/src/controllers/dynamic/worldStateController.ts b/src/controllers/dynamic/worldStateController.ts index e4fdb8f2..9bc7f137 100644 --- a/src/controllers/dynamic/worldStateController.ts +++ b/src/controllers/dynamic/worldStateController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import staticWorldState from "@/static/fixed_responses/worldState.json"; -import buildConfig from "@/static/data/buildConfig.json"; +import { buildConfig } from "@/src/services/buildConfigService"; import { IMongoDate, IOid } from "@/src/types/commonTypes"; export const worldStateController: RequestHandler = (req, res) => { diff --git a/src/routes/cache.ts b/src/routes/cache.ts index d3230cdc..d40bb59a 100644 --- a/src/routes/cache.ts +++ b/src/routes/cache.ts @@ -1,5 +1,5 @@ import express from "express"; -import buildConfig from "@/static/data/buildConfig.json"; +import { buildConfig } from "@/src/services/buildConfigService"; import fs from "fs/promises"; const cacheRouter = express.Router(); diff --git a/src/services/buildConfigService.ts b/src/services/buildConfigService.ts new file mode 100644 index 00000000..f1653aff --- /dev/null +++ b/src/services/buildConfigService.ts @@ -0,0 +1,13 @@ +import path from "path"; +import fs from "fs"; + +const rootDir = path.join(__dirname, "../.."); +const repoDir = path.basename(rootDir) == "build" ? path.join(rootDir, "..") : rootDir; +const buildConfigPath = path.join(repoDir, "static/data/buildConfig.json"); +export const buildConfig = JSON.parse(fs.readFileSync(buildConfigPath, "utf-8")) as IBuildConfig; + +interface IBuildConfig { + version: string; + buildLabel: string; + matchmakingBuildId: string; +} -- 2.47.2 From d897f40c9211b9d6ae1324123ea8b2feab2300f9 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 30 Dec 2024 04:11:32 +0100 Subject: [PATCH 2/2] fix: abort startup if not connected to MongoDB server --- src/index.ts | 42 +++++++++++++++++++++--------------- src/services/mongoService.ts | 20 ----------------- 2 files changed, 25 insertions(+), 37 deletions(-) delete mode 100644 src/services/mongoService.ts diff --git a/src/index.ts b/src/index.ts index a6bfb654..acf55bdb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,30 +7,38 @@ import https from "https"; import fs from "node:fs"; import { app } from "./app"; import { config, validateConfig } from "./services/configService"; -import { connectDatabase } from "@/src/services/mongoService"; import { registerLogFileCreationListener } from "@/src/utils/logger"; +import mongoose from "mongoose"; registerLogFileCreationListener(); validateConfig(); -void (async (): Promise => { - await connectDatabase(); +mongoose + .connect(config.mongodbUrl) + .then(() => { + logger.info("Connected to MongoDB"); - const httpPort = config.httpPort || 80; - const httpsPort = config.httpsPort || 443; - const options = { - key: fs.readFileSync("static/certs/key.pem"), - cert: fs.readFileSync("static/certs/cert.pem") - }; + const httpPort = config.httpPort || 80; + const httpsPort = config.httpsPort || 443; + const options = { + key: fs.readFileSync("static/certs/key.pem"), + cert: fs.readFileSync("static/certs/cert.pem") + }; - http.createServer(app).listen(httpPort, () => { - logger.info("HTTP server started on port " + httpPort); - https.createServer(options, app).listen(httpsPort, () => { - logger.info("HTTPS server started on port " + httpsPort); + http.createServer(app).listen(httpPort, () => { + logger.info("HTTP server started on port " + httpPort); + https.createServer(options, app).listen(httpsPort, () => { + logger.info("HTTPS server started on port " + httpsPort); - logger.info( - "Access the WebUI in your browser at http://localhost" + (httpPort == 80 ? "" : ":" + httpPort) - ); + logger.info( + "Access the WebUI in your browser at http://localhost" + (httpPort == 80 ? "" : ":" + httpPort) + ); + }); }); + }) + .catch(error => { + if (error instanceof Error) { + logger.error(`Error connecting to MongoDB server: ${error.message}`); + } + process.exit(1); }); -})(); diff --git a/src/services/mongoService.ts b/src/services/mongoService.ts deleted file mode 100644 index ef6de535..00000000 --- a/src/services/mongoService.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { logger } from "@/src/utils/logger"; -import { config } from "@/src/services/configService"; -import mongoose from "mongoose"; - -const url = config.mongodbUrl; - -if (url === undefined) { - throw new Error("MONGODB_URL not found. Make sure you have a .env file in the root of the project!"); -} - -export const connectDatabase = async (): Promise => { - try { - await mongoose.connect(`${url}`); - logger.info("Connected to MongoDB"); - } catch (error: unknown) { - if (error instanceof Error) { - logger.error(`Error connecting to MongoDB ${error.message}`); - } - } -}; -- 2.47.2