From b9de52d23fefb8734fc800f7476226b80cae486d Mon Sep 17 00:00:00 2001 From: Zalmoxisus Date: Fri, 19 Aug 2016 19:43:36 +0300 Subject: [PATCH] List reports --- lib/store.js | 27 +++++++++++++++++++++++++++ lib/worker.js | 5 +++++ package.json | 1 + 3 files changed, 33 insertions(+) diff --git a/lib/store.js b/lib/store.js index 49f36ca..628225d 100644 --- a/lib/store.js +++ b/lib/store.js @@ -1,4 +1,5 @@ var uuid = require('node-uuid'); +var pick = require('lodash/pick'); var JSData = require('js-data'); var store; @@ -11,6 +12,31 @@ function error(msg) { }); } +function map(data, fields) { + if (!fields) return data; + return data.map(function(r) { + return pick(r, fields); + }); +} + +function listEvery(query) { + if (!adapter) { + return new Promise(function(resolve) { + var report = Report.filter(query); + return resolve(report); + }); + } + return Report.findAll(query); +} + +function list(query, fields) { + return new Promise(function(resolve) { + listEvery(query).then(function(data) { + return resolve(map(data, fields)); + }); + }); +} + function get(id) { if (!id) return error('No id specified.'); @@ -55,6 +81,7 @@ function createStore(options) { Report = store.defineResource('report'); return { + list: list, get: get, add: add }; diff --git a/lib/worker.js b/lib/worker.js index 5bfa4b4..3b9edcb 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -31,6 +31,11 @@ module.exports.run = function(worker) { res.send(r || {}); }); break; + case 'list': + store.list(req.body.query, req.body.fields).then(function(r) { + res.send(r); + }); + break; default: store.add(req.body).then(function(r) { scServer.exchange.publish('log', req.body); diff --git a/package.json b/package.json index a35364c..5712c41 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "express": "^4.13.3", "getport": "^0.1.0", "js-data": "^2.9.0", + "lodash": "^4.15.0", "minimist": "^1.2.0", "node-uuid": "^1.4.0", "object-assign": "^4.0.0",