diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-02-05 06:43:36 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-02-05 06:43:36 +0900 |
| commit | d3c7129e1f457f99cf10490a10ddff55fbeb29e2 (patch) | |
| tree | 8ac6380f724214ce072661a957b289aaed82f410 /src/misc | |
| parent | Improve doc (diff) | |
| download | sharkey-d3c7129e1f457f99cf10490a10ddff55fbeb29e2.tar.gz sharkey-d3c7129e1f457f99cf10490a10ddff55fbeb29e2.tar.bz2 sharkey-d3c7129e1f457f99cf10490a10ddff55fbeb29e2.zip | |
Refactoring: Extract checkMongoDB function
Diffstat (limited to 'src/misc')
| -rw-r--r-- | src/misc/check-mongodb.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/misc/check-mongodb.ts b/src/misc/check-mongodb.ts new file mode 100644 index 0000000000..f3839da31f --- /dev/null +++ b/src/misc/check-mongodb.ts @@ -0,0 +1,37 @@ +import { nativeDbConn } from '../db/mongodb'; +import { Config } from '../config/types'; +import Logger from './logger'; +import { lessThan } from '../prelude/array'; + +const requiredMongoDBVersion = [3, 6]; + +export function checkMongoDB(config: Config, logger: Logger) { + return new Promise((res, rej) => { + const mongoDBLogger = logger.createSubLogger('db'); + const u = config.mongodb.user ? encodeURIComponent(config.mongodb.user) : null; + const p = config.mongodb.pass ? encodeURIComponent(config.mongodb.pass) : null; + const uri = `mongodb://${u && p ? `${u}:****@` : ''}${config.mongodb.host}:${config.mongodb.port}/${config.mongodb.db}`; + mongoDBLogger.info(`Connecting to ${uri} ...`); + + nativeDbConn().then(db => { + mongoDBLogger.succ('Connectivity confirmed'); + + db.admin().serverInfo().then(x => { + const version = x.version as string; + mongoDBLogger.info(`Version: ${version}`); + if (lessThan(version.split('.').map(x => parseInt(x, 10)), requiredMongoDBVersion)) { + mongoDBLogger.error(`MongoDB version is less than ${requiredMongoDBVersion.join('.')}. Please upgrade it.`); + rej('outdated version'); + } else { + res(); + } + }).catch(err => { + mongoDBLogger.error(`Failed to fetch server info: ${err.message}`); + rej(err); + }); + }).catch(err => { + mongoDBLogger.error(err.message); + rej(err); + }); + }); +} |