misskey/src/db/mongodb.ts

40 lines
896 B
TypeScript
Raw Normal View History

2018-04-02 06:15:53 +02:00
import config from '../config';
2017-01-17 01:12:33 +01:00
2017-12-31 18:26:25 +01:00
const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null;
const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null;
2018-08-11 17:01:07 +02:00
const uri = `mongodb://${u && p ? `${u}:${p}@` : ''}${config.mongodb.host}:${config.mongodb.port}/${config.mongodb.db}`;
2017-11-06 06:37:00 +01:00
/**
* monk
*/
2018-02-01 23:34:51 +01:00
import mongo from 'monk';
2017-01-17 01:12:33 +01:00
2018-06-10 17:24:03 +02:00
const db = mongo(uri);
2017-01-17 01:12:33 +01:00
export default db;
2017-11-06 06:37:00 +01:00
/**
* MongoDB native module (officialy)
*/
2017-11-06 08:32:01 +01:00
import * as mongodb from 'mongodb';
2017-11-06 06:37:00 +01:00
let mdb: mongodb.Db;
const nativeDbConn = async (): Promise<mongodb.Db> => {
if (mdb) return mdb;
const db = await ((): Promise<mongodb.Db> => new Promise((resolve, reject) => {
2018-07-26 20:34:28 +02:00
mongodb.MongoClient.connect(uri, { useNewUrlParser: true }, (e: Error, client: any) => {
2017-11-06 08:32:01 +01:00
if (e) return reject(e);
resolve(client.db(config.mongodb.db));
2017-11-06 08:32:01 +01:00
});
}))();
2017-11-06 06:37:00 +01:00
2017-11-06 08:32:01 +01:00
mdb = db;
2017-11-06 06:37:00 +01:00
2017-11-06 08:32:01 +01:00
return db;
};
2017-11-06 06:37:00 +01:00
2017-11-06 08:32:01 +01:00
export { nativeDbConn };