Data selector by base fields
This commit is contained in:
parent
7986004ea2
commit
9040cae21b
18
lib/store.js
18
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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user