From c79b215b2d55cbca904da8ad2aa4bdf44a75f2a2 Mon Sep 17 00:00:00 2001 From: Manuel Kasper Date: Fri, 22 Apr 2022 15:44:59 +0200 Subject: [PATCH] Add endpoint to obtain historic solar data --- solardata.js | 60 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/solardata.js b/solardata.js index 4ea64cc..66f8dfe 100644 --- a/solardata.js +++ b/solardata.js @@ -7,28 +7,6 @@ const db = require('./db') let router = express.Router() module.exports = router -router.get('/:date/:hour', - check("date").matches(/^\d\d\d\d-\d\d-\d\d$/), - check("hour").isInt({gt: -1, lt: 24}), - (req, res) => { - - db.getDb().collection('solardata').findOne({date: req.params.date, hour: req.params.hour}, (err, solardata) => { - if (err) { - return res.status(500).end() - } - - if (!solardata) { - return res.status(404).end() - } - - delete solardata._id - delete solardata.date - delete solardata.hour - - return res.json(solardata) - }) -}) - router.get('/latest', (req, res) => { db.getDb().collection('solardata').find().sort({date: -1, hour: -1}).limit(1).toArray((err, solardataArr) => { if (err) { @@ -55,6 +33,44 @@ router.get('/latest', (req, res) => { }) }) +router.get('/history/:hours', + check("hours").isInt({gt: 0, lt: 1000}), + (req, res) => { + db.getDb().collection('solardata').find().sort({date: -1, hour: -1}).limit(parseInt(req.params.hours)).toArray((err, solardataArr) => { + if (err) { + return res.status(500).end() + } + + for (let solardata of solardataArr) { + delete solardata._id + } + + return res.json(solardataArr) + }) +}) + +router.get('/:date/:hour', + check("date").matches(/^\d\d\d\d-\d\d-\d\d$/), + check("hour").isInt({gt: -1, lt: 24}), + (req, res) => { + + db.getDb().collection('solardata').findOne({date: req.params.date, hour: req.params.hour}, (err, solardata) => { + if (err) { + return res.status(500).end() + } + + if (!solardata) { + return res.status(404).end() + } + + delete solardata._id + delete solardata.date + delete solardata.hour + + return res.json(solardata) + }) +}) + router.post('/:date/:hour', check("date").matches(/^\d\d\d\d-\d\d-\d\d$/), check("hour").isInt({gt: -1, lt: 24}),