From 8d64cad9599c490750865db31de5eddc40123087 Mon Sep 17 00:00:00 2001 From: GEEKiDoS Date: Fri, 8 Mar 2024 16:35:14 +0800 Subject: [PATCH] inject mongodb --- src/main.ts | 17 ++++++++++++++++- src/utils/config.ts | 34 +++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/main.ts b/src/main.ts index feed6ef..a918470 100644 --- a/src/main.ts +++ b/src/main.ts @@ -11,6 +11,7 @@ import { binaryBody } from './middlewares/binarybody.js'; import { parseKxml } from './middlewares/parseKxml.js'; import { decompress } from './middlewares/decompress.js'; import config from './utils/config.js'; +import { MongoClient, Db } from 'mongodb'; function tryResolve(token: InjectionToken): T | undefined { if (!container.isRegistered(token)) return undefined; @@ -29,7 +30,20 @@ function register( } async function main(): Promise { - const logger = new Logger('main'); + const logger = new Logger('laochan-net'); + + logger.info('initialization...'); + + { + logger.info('connecting to mongodb...'); + const client = await MongoClient.connect(config.mongoUrl); + + container.register(Db, { + useValue: client.db(config.dbName), + }); + } + + logger.info('creating koa app...'); const app = new Koa() .use(async (ctx, next) => { @@ -126,6 +140,7 @@ async function main(): Promise { return await next(); }); + logger.info('listening on %d', config.port); app.listen(config.port); } diff --git a/src/utils/config.ts b/src/utils/config.ts index a159e7e..c1ea147 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -2,25 +2,29 @@ import dotenv from 'dotenv'; dotenv.config(); class Config { - get port() { - return process.env.PORT ? parseInt(process.env.PORT) : 10573; - } + get port() { + return process.env.PORT ? parseInt(process.env.PORT) : 10573; + } - get selfUrl() { - return process.env.SELF_URL ?? 'http://127.0.0.1:10573'; - } + get selfUrl() { + return process.env.SELF_URL ?? 'http://127.0.0.1:10573'; + } - get ntpUrl() { - return process.env.NTP_URL ?? 'ntp://pool.ntp.org'; - } + get ntpUrl() { + return process.env.NTP_URL ?? 'ntp://pool.ntp.org'; + } - get mongoUrl() { - return process.env.MONGO_URL ?? 'mongodb://127.0.0.1:27017'; - } + get mongoUrl() { + return process.env.MONGO_URL ?? 'mongodb://127.0.0.1:27017'; + } - get isDev() { - return process.env.NODE_ENV !== 'production'; - } + get dbName() { + return process.env.DB_NAME ?? 'laochan-net'; + } + + get isDev() { + return process.env.NODE_ENV !== 'production'; + } } export const config = new Config();