2018-04-01 23:15:53 -05:00
|
|
|
import config from '../config';
|
2017-01-16 18:12:33 -06:00
|
|
|
|
2019-02-06 07:44:55 -06:00
|
|
|
const u = config.mongodb.user.map(x => encodeURIComponent(x)).getOrElse(null);
|
|
|
|
const p = config.mongodb.pass.map(x => encodeURIComponent(x)).getOrElse(null);
|
2017-12-31 11:26:25 -06:00
|
|
|
|
2018-08-11 10:01:07 -05:00
|
|
|
const uri = `mongodb://${u && p ? `${u}:${p}@` : ''}${config.mongodb.host}:${config.mongodb.port}/${config.mongodb.db}`;
|
2017-11-05 23:37:00 -06:00
|
|
|
|
|
|
|
/**
|
|
|
|
* monk
|
|
|
|
*/
|
2018-02-01 16:34:51 -06:00
|
|
|
import mongo from 'monk';
|
2017-01-16 18:12:33 -06:00
|
|
|
|
2018-06-10 10:24:03 -05:00
|
|
|
const db = mongo(uri);
|
2017-01-16 18:12:33 -06:00
|
|
|
|
|
|
|
export default db;
|
2017-11-05 23:37:00 -06:00
|
|
|
|
|
|
|
/**
|
|
|
|
* MongoDB native module (officialy)
|
|
|
|
*/
|
2017-11-06 01:32:01 -06:00
|
|
|
import * as mongodb from 'mongodb';
|
2019-02-03 03:16:57 -06:00
|
|
|
import Logger from '../misc/logger';
|
2017-11-05 23:37:00 -06: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 13:34:28 -05:00
|
|
|
mongodb.MongoClient.connect(uri, { useNewUrlParser: true }, (e: Error, client: any) => {
|
2017-11-06 01:32:01 -06:00
|
|
|
if (e) return reject(e);
|
2017-12-31 00:15:19 -06:00
|
|
|
resolve(client.db(config.mongodb.db));
|
2017-11-06 01:32:01 -06:00
|
|
|
});
|
|
|
|
}))();
|
2017-11-05 23:37:00 -06:00
|
|
|
|
2017-11-06 01:32:01 -06:00
|
|
|
mdb = db;
|
2017-11-05 23:37:00 -06:00
|
|
|
|
2017-11-06 01:32:01 -06:00
|
|
|
return db;
|
|
|
|
};
|
2017-11-05 23:37:00 -06:00
|
|
|
|
2017-11-06 01:32:01 -06:00
|
|
|
export { nativeDbConn };
|
2019-02-03 03:16:57 -06:00
|
|
|
|
|
|
|
export const dbLogger = new Logger('db');
|