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 adapter;
var Report; var Report;
var baseFields = ['id', 'title', 'added'];
function error(msg) { function error(msg) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
return resolve({ error: msg }); return resolve({ error: msg });
@ -32,7 +34,7 @@ function listEvery(query) {
function list(query, fields) { function list(query, fields) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
listEvery(query).then(function(data) { 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 = { var obj = {
id: uuid.v4(), id: uuid.v4(),
type: data.type, type: data.type,
title: data.title, title: data.title || data.exception && data.exception.message || data.action,
description: data.description, description: data.description,
action: data.action, action: data.action,
payload: data.payload, payload: data.payload,
@ -72,8 +74,7 @@ function add(data) {
user: data.user, user: data.user,
userId: typeof data.user === 'object' ? data.user.id : data.user, userId: typeof data.user === 'object' ? data.user.id : data.user,
meta: data.meta, meta: data.meta,
error: data.error, exception: data.exception,
isLog: !!data.isLog,
added: Date.now() added: Date.now()
}; };
@ -86,6 +87,10 @@ function add(data) {
return Report.create(obj); return Report.create(obj);
} }
function byBaseFields(data) {
return pick(data, baseFields);
}
function createStore(options) { function createStore(options) {
store = new JSData.DS(); store = new JSData.DS();
Report = store.defineResource('report'); Report = store.defineResource('report');
@ -93,7 +98,10 @@ function createStore(options) {
return { return {
list: list, list: list,
get: get, get: get,
add: add add: add,
selectors: {
byBaseFields: byBaseFields
}
}; };
} }

View File

@ -7,7 +7,7 @@ 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; var store = createStore(worker.options);
httpServer.on('request', app); httpServer.on('request', app);
@ -23,8 +23,6 @@ module.exports.run = function(worker) {
app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.urlencoded({ extended: false }));
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);
switch(req.body.op) { switch(req.body.op) {
case 'get': case 'get':
store.get(req.body.id).then(function(r) { store.get(req.body.id).then(function(r) {
@ -38,8 +36,10 @@ module.exports.run = function(worker) {
break; break;
default: default:
store.add(req.body).then(function(r) { store.add(req.body).then(function(r) {
scServer.exchange.publish('log', req.body);
res.send({ id: r.id, error: r.error }); res.send({ id: r.id, error: r.error });
scServer.exchange.publish('report', {
type: 'add', data: store.selectors.byBaseFields(r)
});
}); });
} }
}); });