Add endpoint to retrieve real-time input data

This commit is contained in:
D. Berge
2020-09-01 10:56:25 +02:00
parent bfc4124b33
commit 557d87de72
9 changed files with 59 additions and 1 deletions

View File

@@ -132,6 +132,9 @@ app.map({
// // post: [ mw.permissions.post ],
// // delete: [ mw.permissions.delete ]
// },
'/navdata/': {
get: [ mw.navdata.get ],
}
//
// '/user': {
// get: [ mw.user.get ],

View File

@@ -7,5 +7,6 @@ module.exports = {
auth: require('./auth'),
gis: require('./gis'),
label: require('./label'),
navdata: require('./navdata'),
configuration: require('./configuration')
};

View File

@@ -0,0 +1,13 @@
const { navdata } = require('../../../lib/db');
module.exports = async function (req, res, next) {
try {
res.status(200).send(await navdata.get(req.query));
next();
} catch (err) {
next(err);
}
};

View File

@@ -0,0 +1,7 @@
module.exports = {
get: require('./get'),
post: require('./post'),
put: require('./put'),
delete: require('./delete')
}

View File

@@ -0,0 +1,33 @@
const { transaction, pool } = require('../connection');
function fields (obj, keys) {
const retval = {};
for (const key of keys) {
retval[key] = obj[key];
}
return retval;
}
async function get (opts = {}) {
const client = await pool.connect();
const text = `
SELECT meta
FROM real_time_inputs
ORDER BY tstamp DESC
LIMIT $1
OFFSET $2
`;
const values = [ opts.limit || 300, opts.offset || 0 ];
const res = await client.query(text, values);
client.release();
return opts.fields
? res.rows.map(r => fields(r.meta, opts.fields.split(/[;,\s]+/)))
: res.rows.map(r => r.meta);
}
module.exports = get;

View File

@@ -1,5 +1,6 @@
module.exports = {
save: require('./save')
save: require('./save'),
get: require('./get')
};