Data selector by base fields

This commit is contained in:
Zalmoxisus 2016-09-11 17:07:02 +03:00
parent 7986004ea2
commit 9040cae21b
2 changed files with 17 additions and 9 deletions

View File

@ -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
}
};
}

View File

@ -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)
});
});
}
});