123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- "use strict";
- var loki = require('lokijs'),
- fs = require("fs"),
- path = require("path"),
- Promise = require('bluebird'),
- _ = require('lodash');
- /**
- * Loki.js module
- *
- * @param {Object} appconfig Application config
- * @return {Object} LokiJS instance
- */
- module.exports = function(appconfig) {
- let dbReadyResolve;
- let dbReady = new Promise((resolve, reject) => {
- dbReadyResolve = resolve;
- });
- // Initialize Loki.js
- let dbModel = {
- Store: new loki(path.join(appconfig.datadir.db, 'app.db'), {
- env: 'NODEJS',
- autosave: true,
- autosaveInterval: 5000
- }),
- Models: {},
- onReady: dbReady
- };
- // Load Models
- let dbModelsPath = path.join(ROOTPATH, 'models/db');
- dbModel.Store.loadDatabase({}, () => {
- fs
- .readdirSync(dbModelsPath)
- .filter(function(file) {
- return (file.indexOf(".") !== 0);
- })
- .forEach(function(file) {
- let modelName = _.upperFirst(_.split(file,'.')[0]);
- dbModel.Models[modelName] = require(path.join(dbModelsPath, file));
- dbModel[modelName] = dbModel.Store.getCollection(modelName);
- if(!dbModel[modelName]) {
- dbModel[modelName] = dbModel.Store.addCollection(modelName);
- }
- });
- dbReadyResolve();
- });
- return dbModel;
- };
|