From 7c60bd69efdcf196bfbef0a2341542ffefa7b669 Mon Sep 17 00:00:00 2001 From: saopig1 Date: Mon, 30 Mar 2026 00:21:38 +0800 Subject: [PATCH] feat: add application entry point with config, database, and logger initialization Co-Authored-By: Claude Opus 4.6 (1M context) --- src/index.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/index.ts diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..d4a6268 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,36 @@ +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { loadConfig, saveConfig } from "./data/config.js"; +import { createDatabase } from "./data/database.js"; +import { createLogger } from "./logger.js"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT_DIR = path.resolve(__dirname, ".."); +const DATA_DIR = path.join(ROOT_DIR, "data"); +const CONFIG_PATH = path.join(ROOT_DIR, "config.json"); +const DB_PATH = path.join(DATA_DIR, "tsmusicbot.db"); +const LOG_DIR = path.join(DATA_DIR, "logs"); + +async function main() { + const config = loadConfig(CONFIG_PATH); + saveConfig(CONFIG_PATH, config); + + const logger = createLogger(LOG_DIR); + const db = createDatabase(DB_PATH); + + logger.info({ webPort: config.webPort }, "TSMusicBot started"); + + const shutdown = () => { + logger.info("Shutting down..."); + db.close(); + process.exit(0); + }; + + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); +} + +main().catch((err) => { + console.error("Fatal error:", err); + process.exit(1); +});