From 9040cae21bcd1c7984c701da70c946f2421ed73b Mon Sep 17 00:00:00 2001 From: Zalmoxisus Date: Sun, 11 Sep 2016 17:07:02 +0300 Subject: [PATCH] Data selector by base fields --- lib/store.js | 18 +++++++++++++----- lib/worker.js | 8 ++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lib/store.js b/lib/store.js index 9ec842a..ea65bd5 100644 --- a/lib/store.js +++ b/lib/store.js @@ -6,6 +6,8 @@ var store; var adapter; var Report; +var baseFields = ['id', 'title', 'added']; + function error(msg) { return new Promise(function(resolve, reject) { return resolve({ error: msg }); @@ -32,7 +34,7 @@ function listEvery(query) { function list(query, fields) { return new Promise(function(resolve) { listEvery(query).then(function(data) { - return resolve(map(data, fields)); + return resolve(map(data, fields || baseFields)); }); }); } @@ -60,7 +62,7 @@ function add(data) { var obj = { id: uuid.v4(), type: data.type, - title: data.title, + title: data.title || data.exception && data.exception.message || data.action, description: data.description, action: data.action, payload: data.payload, @@ -72,8 +74,7 @@ function add(data) { user: data.user, userId: typeof data.user === 'object' ? data.user.id : data.user, meta: data.meta, - error: data.error, - isLog: !!data.isLog, + exception: data.exception, added: Date.now() }; @@ -86,6 +87,10 @@ function add(data) { return Report.create(obj); } +function byBaseFields(data) { + return pick(data, baseFields); +} + function createStore(options) { store = new JSData.DS(); Report = store.defineResource('report'); @@ -93,7 +98,10 @@ function createStore(options) { return { list: list, get: get, - add: add + add: add, + selectors: { + byBaseFields: byBaseFields + } }; } diff --git a/lib/worker.js b/lib/worker.js index 3b9edcb..411d454 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -7,7 +7,7 @@ var createStore = require('./store'); module.exports.run = function(worker) { var httpServer = worker.httpServer; var scServer = worker.scServer; - var store; + var store = createStore(worker.options); httpServer.on('request', app); @@ -23,8 +23,6 @@ module.exports.run = function(worker) { app.use(bodyParser.urlencoded({ extended: false })); app.post('/', function(req, res) { if (!req.body) return res.status(404).end(); - if (!store) store = createStore(worker.options); - switch(req.body.op) { case 'get': store.get(req.body.id).then(function(r) { @@ -38,8 +36,10 @@ module.exports.run = function(worker) { break; default: store.add(req.body).then(function(r) { - scServer.exchange.publish('log', req.body); res.send({ id: r.id, error: r.error }); + scServer.exchange.publish('report', { + type: 'add', data: store.selectors.byBaseFields(r) + }); }); } });