inject mongodb

This commit is contained in:
GEEKiDoS
2024-03-08 16:35:14 +08:00
parent fd8db5e74b
commit 8d64cad959
2 changed files with 35 additions and 16 deletions
+16 -1
View File
@@ -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<T>(token: InjectionToken<T>): T | undefined {
if (!container.isRegistered(token)) return undefined;
@@ -29,7 +30,20 @@ function register<T>(
}
async function main(): Promise<void> {
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<DefaultState, ILaochanContext>()
.use(async (ctx, next) => {
@@ -126,6 +140,7 @@ async function main(): Promise<void> {
return await next();
});
logger.info('listening on %d', config.port);
app.listen(config.port);
}
+19 -15
View File
@@ -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();