summaryrefslogtreecommitdiff
path: root/src/misc
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-02-05 06:43:36 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-02-05 06:43:36 +0900
commitd3c7129e1f457f99cf10490a10ddff55fbeb29e2 (patch)
tree8ac6380f724214ce072661a957b289aaed82f410 /src/misc
parentImprove doc (diff)
downloadsharkey-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.ts37
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);
+ });
+ });
+}