feat: implement issue #
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
require_once(APPDIR."/Measurement/Measurement.php");
|
||||
require_once(APPDIR."/Measurement/MeasurementModel.php");
|
||||
|
||||
class MeasurementsApicontroller extends mfBaseApicontroller
|
||||
{
|
||||
protected function init()
|
||||
{
|
||||
// Initialize database connection if needed
|
||||
$this->addRoute("/measurements/latest", "getLatestMeasurements", "GET");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the latest measurements grouped by unique device_id and sensor_id combinations
|
||||
* Returns one measurement per combination, limited to 50 results
|
||||
*/
|
||||
protected function getLatestMeasurements()
|
||||
{
|
||||
// Get limit from query parameters, default to 50, max 100
|
||||
$limit = 50;
|
||||
if (isset($this->get['limit']) && is_numeric($this->get['limit'])) {
|
||||
$limit = min(100, max(1, intval($this->get['limit'])));
|
||||
}
|
||||
|
||||
// Get the latest measurements grouped by device_id and sensor_id
|
||||
$measurements = MeasurementModel::getLatestGroupedByDeviceAndSensor($limit);
|
||||
|
||||
$result = [];
|
||||
foreach ($measurements as $measurement) {
|
||||
$result[] = [
|
||||
'id' => $measurement->id,
|
||||
'device_id' => $measurement->device_id,
|
||||
'sensor_id' => $measurement->sensor_id,
|
||||
'value' => (float)$measurement->value,
|
||||
'unit' => $measurement->unit,
|
||||
'timestamp' => $measurement->create,
|
||||
'created_at' => date('Y-m-d H:i:s', $measurement->create)
|
||||
];
|
||||
}
|
||||
|
||||
return mfResponse::Ok([
|
||||
'count' => count($result),
|
||||
'measurements' => $result
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user