You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.9 KiB
JavaScript

'use strict';
(function(module) {
/*
* Okay, so LevelDB was made by Google. Therefore it's skalable.
* BUT, I created 99% of the rest of NodeBB's expected functionality out of just simple get and set commands.
* Therefore, it is unskalable. I totally should have read the docs before starting.
*
* With much <3, psychobunny.
*/
var winston = require('winston'),
nconf = require('nconf'),
path = require('path'),
session = require('express-session'),
utils = require('./../../public/src/utils.js'),
levelup,
leveldown,
connectLevel,
db;
module.questions = [
{
name: "level:database",
description: "Enter the path to your Level database",
'default': nconf.get('level:database') || '/var/level/nodebb'
}
];
module.init = function(callback) {
try {
levelup = require('levelup');
leveldown = require('leveldown');
connectLevel = require('connect-leveldb')(session);
} catch (err) {
winston.error('Unable to initialize Level DB! Is Level DB installed? Error :' + err.message);
process.exit();
}
if (db) {
if(typeof callback === 'function') {
callback();
}
return;
}
db = levelup(nconf.get('level:database'), {
valueEncoding: 'json'
});
leveldown(nconf.get('level:database'));
db.on('error', function (err) {
winston.error(err.stack);
});
module.client = db;
module.leveldown = leveldown;
module.sessionStore = new connectLevel({
db: db,
ttl: 60 * 60 * 24 * 14
});
require('./level/main')(db, module);
require('./level/hash')(db, module);
require('./level/sets')(db, module);
require('./level/sorted')(db, module);
require('./level/list')(db, module);
if(typeof callback === 'function') {
callback();
}
};
module.close = function(callback) {
db.close(callback);
};
module.helpers = module.helpers || {};
module.helpers.level = require('./level/helpers');
}(exports));