diff --git a/bin/remotedev.js b/bin/remotedev.js index 1ea3d55..4dca3aa 100755 --- a/bin/remotedev.js +++ b/bin/remotedev.js @@ -4,7 +4,7 @@ var path = require('path'); var argv = require('minimist')(process.argv.slice(2)); var chalk = require('chalk'); var injectServer = require('./injectServer'); -var getOptions = require('./../lib/getOptions'); +var getOptions = require('./../lib/options'); function readFile(filePath) { return fs.readFileSync(path.resolve(process.cwd(), filePath), 'utf-8'); diff --git a/bin/server.js b/bin/server.js index 12b722e..7837158 100644 --- a/bin/server.js +++ b/bin/server.js @@ -1,6 +1,6 @@ var assign = require('object-assign'); var repeat = require('repeat-string'); -var getOptions = require('./../lib/getOptions'); +var getOptions = require('./../lib/options'); var getPort = require('getport'); var LOG_LEVEL_NONE = 0; diff --git a/lib/getOptions.js b/lib/options.js similarity index 82% rename from lib/getOptions.js rename to lib/options.js index 682f829..af9fef5 100644 --- a/lib/getOptions.js +++ b/lib/options.js @@ -8,6 +8,8 @@ module.exports = function getOptions(argv) { cert: argv.cert || process.env.npm_package_remotedev_cert || 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 }; } diff --git a/lib/store.js b/lib/store.js new file mode 100644 index 0000000..65bab62 --- /dev/null +++ b/lib/store.js @@ -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; diff --git a/lib/worker.js b/lib/worker.js index 2a9e51a..a2aea54 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -2,10 +2,12 @@ var path = require('path'); var app = require('express')(); var bodyParser = require('body-parser'); var cors = require('cors'); +var createStore = require('./store'); module.exports.run = function(worker) { var httpServer = worker.httpServer; var scServer = worker.scServer; + var store; httpServer.on('request', app); @@ -20,8 +22,11 @@ module.exports.run = function(worker) { app.use(bodyParser.json()); app.post('/', function(req, res) { if (!req.body) return res.status(404).end(); - scServer.exchange.publish('log', req.body); - res.send('OK'); + if (!store) store = createStore(worker.options); + store.add(req.body).then(function(r) { + scServer.exchange.publish('log', req.body); + res.send({ id: r.id }); + }); }); scServer.addMiddleware(scServer.MIDDLEWARE_EMIT, function (req, next) { diff --git a/package.json b/package.json index 593668d..a35364c 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,9 @@ "ejs": "^2.4.1", "express": "^4.13.3", "getport": "^0.1.0", + "js-data": "^2.9.0", "minimist": "^1.2.0", + "node-uuid": "^1.4.0", "object-assign": "^4.0.0", "repeat-string": "^1.5.4", "semver": "^5.3.0",