Skip to content

Commit

Permalink
add getter for measurements
Browse files Browse the repository at this point in the history
  • Loading branch information
vol4tim committed Aug 21, 2024
1 parent bdd0445 commit 2f4f664
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/api/sensor/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import City from "../../models/city";
import {
getBySensor,
getHistoryByDate,
getLastValuesByDate,
getLastValueTypeByDate,
getLastValuesByDate,
getMaxValuesByDate,
getMeasurements,
getMessagesByDate,
} from "../../models/measurement";
import logger from "../../utils/logger";
Expand Down Expand Up @@ -274,6 +275,23 @@ export default {
try {
const result = await getBySensor(sensor, start, end);

res.send({
result,
});
} catch (error) {
logger.error(error.toString());
res.send({
error: "Error",
});
}
},
async measurements(req, res) {
const start = req.params.start;
const end = req.params.end;

try {
const result = await getMeasurements(start, end);

res.send({
result,
});
Expand Down
1 change: 1 addition & 0 deletions src/api/sensor/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ router.get("/messages/:start/:end", controller.messages);
router.get("/max/:start/:end/:type", controller.max);
router.get("/csv/:start/:end/:city", controller.csv);
router.get("/json/:start?/:end?", controller.json);
router.get("/measurements/:start/:end", controller.measurements);
router.get("/:sensor/:start/:end", controller.sensor);

export default router;
19 changes: 19 additions & 0 deletions src/models/measurement.js
Original file line number Diff line number Diff line change
Expand Up @@ -379,3 +379,22 @@ export async function getBySensor(sensor_id, start, end) {
};
});
}

export async function getMeasurements(start, end) {
const rows = await Measurement.find(
{
timestamp: {
$gt: start,
$lt: end,
},
},
{ measurement: 1 }
).lean();
let res = [];
for (const item of rows) {
if (item.measurement) {
res = [...new Set([...res, ...Object.keys(item.measurement)])];
}
}
return res;
}

0 comments on commit 2f4f664

Please sign in to comment.