Persist reports in memory

This commit is contained in:
Zalmoxisus 2016-08-17 17:56:42 +03:00
parent 0fb42d9f75
commit e53679087b
6 changed files with 45 additions and 4 deletions

View File

@ -4,7 +4,7 @@ var path = require('path');
var argv = require('minimist')(process.argv.slice(2)); var argv = require('minimist')(process.argv.slice(2));
var chalk = require('chalk'); var chalk = require('chalk');
var injectServer = require('./injectServer'); var injectServer = require('./injectServer');
var getOptions = require('./../lib/getOptions'); var getOptions = require('./../lib/options');
function readFile(filePath) { function readFile(filePath) {
return fs.readFileSync(path.resolve(process.cwd(), filePath), 'utf-8'); return fs.readFileSync(path.resolve(process.cwd(), filePath), 'utf-8');

View File

@ -1,6 +1,6 @@
var assign = require('object-assign'); var assign = require('object-assign');
var repeat = require('repeat-string'); var repeat = require('repeat-string');
var getOptions = require('./../lib/getOptions'); var getOptions = require('./../lib/options');
var getPort = require('getport'); var getPort = require('getport');
var LOG_LEVEL_NONE = 0; var LOG_LEVEL_NONE = 0;

View File

@ -8,6 +8,8 @@ module.exports = function getOptions(argv) {
cert: argv.cert || process.env.npm_package_remotedev_cert || null, cert: argv.cert || process.env.npm_package_remotedev_cert || null,
passphrase: argv.passphrase || process.env.npm_package_remotedev_passphrase || null passphrase: argv.passphrase || process.env.npm_package_remotedev_passphrase || null
}, },
adapter: argv.adapter || process.env.npm_package_remotedev_adapter,
db: argv.adapter || process.env.npm_package_remotedev_db,
logLevel: argv.logLevel || 3 logLevel: argv.logLevel || 3
}; };
} }

32
lib/store.js Normal file
View File

@ -0,0 +1,32 @@
var uuid = require('node-uuid');
var JSData = require('js-data');
var store;
var adapter;
var Report;
function add(data) {
var obj = {
id: uuid.v4(),
type: data.type,
payload: data.payload
};
if (!adapter) {
return new Promise(function(resolve) {
var report = Report.inject(obj);
return resolve(report);
});
}
return Report.create(obj);
}
function createStore(options) {
store = new JSData.DS();
Report = store.defineResource('report');
return {
add: add
};
}
module.exports = createStore;

View File

@ -2,10 +2,12 @@ var path = require('path');
var app = require('express')(); var app = require('express')();
var bodyParser = require('body-parser'); var bodyParser = require('body-parser');
var cors = require('cors'); var cors = require('cors');
var createStore = require('./store');
module.exports.run = function(worker) { module.exports.run = function(worker) {
var httpServer = worker.httpServer; var httpServer = worker.httpServer;
var scServer = worker.scServer; var scServer = worker.scServer;
var store;
httpServer.on('request', app); httpServer.on('request', app);
@ -20,8 +22,11 @@ module.exports.run = function(worker) {
app.use(bodyParser.json()); app.use(bodyParser.json());
app.post('/', function(req, res) { app.post('/', function(req, res) {
if (!req.body) return res.status(404).end(); if (!req.body) return res.status(404).end();
if (!store) store = createStore(worker.options);
store.add(req.body).then(function(r) {
scServer.exchange.publish('log', req.body); scServer.exchange.publish('log', req.body);
res.send('OK'); res.send({ id: r.id });
});
}); });
scServer.addMiddleware(scServer.MIDDLEWARE_EMIT, function (req, next) { scServer.addMiddleware(scServer.MIDDLEWARE_EMIT, function (req, next) {

View File

@ -32,7 +32,9 @@
"ejs": "^2.4.1", "ejs": "^2.4.1",
"express": "^4.13.3", "express": "^4.13.3",
"getport": "^0.1.0", "getport": "^0.1.0",
"js-data": "^2.9.0",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"node-uuid": "^1.4.0",
"object-assign": "^4.0.0", "object-assign": "^4.0.0",
"repeat-string": "^1.5.4", "repeat-string": "^1.5.4",
"semver": "^5.3.0", "semver": "^5.3.0",