Files
NodeBB/src/database/index.js

60 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-02-18 01:56:23 -07:00
'use strict';
2013-12-02 15:45:15 -05:00
2021-02-04 00:06:15 -07:00
const nconf = require('nconf');
2021-02-04 00:06:15 -07:00
const databaseName = nconf.get('database');
const winston = require('winston');
2015-12-21 12:02:10 +02:00
if (!databaseName) {
2016-10-14 21:48:38 +03:00
winston.error(new Error('Database type not set! Run ./nodebb setup'));
2013-12-06 17:46:03 -05:00
process.exit();
}
2021-02-03 23:59:08 -07:00
const primaryDB = require(`./${databaseName}`);
2013-12-02 15:45:15 -05:00
2018-10-25 19:58:01 -04:00
primaryDB.parseIntFields = function (data, intFields, requestedFields) {
intFields.forEach((field) => {
if (!requestedFields || !requestedFields.length || requestedFields.includes(field)) {
2018-10-25 19:58:01 -04:00
data[field] = parseInt(data[field], 10) || 0;
}
});
2018-10-20 16:31:16 -04:00
};
2019-10-05 17:05:52 -04:00
primaryDB.initSessionStore = async function () {
const sessionStoreConfig = nconf.get('session_store') || nconf.get('redis') || nconf.get(databaseName);
let sessionStoreDB = primaryDB;
if (nconf.get('session_store')) {
2021-02-03 23:59:08 -07:00
sessionStoreDB = require(`./${sessionStoreConfig.name}`);
} else if (nconf.get('redis')) {
// if redis is specified, use it as session store over others
sessionStoreDB = require('./redis');
}
2019-10-05 17:05:52 -04:00
primaryDB.sessionStore = await sessionStoreDB.createSessionStore(sessionStoreConfig);
};
function promisifySessionStoreMethod(method, sid) {
return new Promise((resolve, reject) => {
if (!primaryDB.sessionStore) {
resolve(method === 'get' ? null : undefined);
return;
}
primaryDB.sessionStore[method](sid, (err, result) => {
if (err) reject(err);
else resolve(method === 'get' ? result || null : undefined);
});
});
}
primaryDB.sessionStoreGet = function (sid) {
return promisifySessionStoreMethod('get', sid);
};
primaryDB.sessionStoreDestroy = function (sid) {
return promisifySessionStoreMethod('destroy', sid);
};
2017-02-18 02:30:48 -07:00
module.exports = primaryDB;