Bugfix new device sensor list

This commit is contained in:
Starbeamrainbowlabs 2019-07-18 22:18:30 +01:00
parent a325940322
commit 7a489706bd
Signed by: sbrl
GPG key ID: 1BE5172E637709C2
3 changed files with 22 additions and 9 deletions

View file

@ -11,6 +11,8 @@ use AirQuality\Repositories\IMeasurementDataRepository;
use AirQuality\Repositories\MariaDBMeasurementDataRepository; use AirQuality\Repositories\MariaDBMeasurementDataRepository;
use AirQuality\Repositories\IMeasurementTypeRepository; use AirQuality\Repositories\IMeasurementTypeRepository;
use AirQuality\Repositories\MariaDBMeasurementTypeRepository; use AirQuality\Repositories\MariaDBMeasurementTypeRepository;
use AirQuality\Repositories\ISensorRepository;
use AirQuality\Repositories\MariaDBSensorRepository;
use SBRL\PerformanceCounter; use SBRL\PerformanceCounter;
@ -31,5 +33,6 @@ return [
// Interfaces that need mapping to their implementations // Interfaces that need mapping to their implementations
IDeviceRepository::class => DI\autowire(MariaDBDeviceRepository::class), IDeviceRepository::class => DI\autowire(MariaDBDeviceRepository::class),
IMeasurementDataRepository::class => DI\autowire(MariaDBMeasurementDataRepository::class), IMeasurementDataRepository::class => DI\autowire(MariaDBMeasurementDataRepository::class),
IMeasurementTypeRepository::class => DI\autowire(MariaDBMeasurementTypeRepository::class) IMeasurementTypeRepository::class => DI\autowire(MariaDBMeasurementTypeRepository::class),
ISensorRepository::class => DI\autowire(MariaDBSensorRepository::class)
]; ];

View file

@ -4,6 +4,7 @@ namespace AirQuality\Actions;
use \SBRL\TomlConfig; use \SBRL\TomlConfig;
use \AirQuality\Repositories\IDeviceRepository; use \AirQuality\Repositories\IDeviceRepository;
use \AirQuality\Repositories\ISensorRepository;
use \AirQuality\Repositories\IMeasurementTypeRepository; use \AirQuality\Repositories\IMeasurementTypeRepository;
use \AirQuality\ApiResponseSender; use \AirQuality\ApiResponseSender;
@ -19,6 +20,9 @@ class DeviceInfo implements IAction {
/** @var IDeviceRepository */ /** @var IDeviceRepository */
private $device_repo; private $device_repo;
/** @var ISensorRepository */
private $sensor_repo;
/** @var IMeasurementTypeRepository */ /** @var IMeasurementTypeRepository */
private $type_repo; private $type_repo;
@ -31,10 +35,12 @@ class DeviceInfo implements IAction {
public function __construct( public function __construct(
TomlConfig $in_settings, TomlConfig $in_settings,
IDeviceRepository $in_device_repo, IDeviceRepository $in_device_repo,
ISensorRepository $in_sensor_repo,
ApiResponseSender $in_sender, ApiResponseSender $in_sender,
\SBRL\PerformanceCounter $in_perfcounter) { \SBRL\PerformanceCounter $in_perfcounter) {
$this->settings = $in_settings; $this->settings = $in_settings;
$this->device_repo = $in_device_repo; $this->device_repo = $in_device_repo;
$this->sensor_repo = $in_sensor_repo;
$this->sender = $in_sender; $this->sender = $in_sender;
$this->perfcounter = $in_perfcounter; $this->perfcounter = $in_perfcounter;
@ -52,7 +58,10 @@ class DeviceInfo implements IAction {
// 2: Pull data from database // 2: Pull data from database
$this->perfcounter->start("sql"); $this->perfcounter->start("sql");
$data = $this->device_repo->get_device_info_ext( $data = $this->device_repo->get_device_info_ext(
$_GET["device-id"] intval($_GET["device-id"])
);
$data_sensor = $this->sensor_repo->get_device_sensors(
intval($_GET["device-id"])
); );
$this->perfcounter->end("sql"); $this->perfcounter->end("sql");
@ -66,6 +75,7 @@ class DeviceInfo implements IAction {
// 3: Serialise data // 3: Serialise data
$this->perfcounter->start("encode"); $this->perfcounter->start("encode");
$data["sensors"] = $data_sensor;
$response = json_encode($data); $response = json_encode($data);
$this->perfcounter->end("encode"); $this->perfcounter->end("encode");

View file

@ -9,11 +9,11 @@ use Location\Distance\Vincenty;
/** /**
* Fetches device info from a MariaDB database. * Fetches device info from a MariaDB database.
*/ */
class MariaDBDeviceRepository implements ISensorRepository { class MariaDBSensorRepository implements ISensorRepository {
public static $table_name = "sensors"; public static $table_name = "sensors";
public static $col_id = "id"; public static $col_id = "id";
public static $col_type = "Type"; public static $col_type = "Type";
public static $col_descriptioon = "Description"; public static $col_description = "Description";
public static $table_name_assoc = "device_sensors"; public static $table_name_assoc = "device_sensors";
public static $col_assoc_device_id = "device_id"; public static $col_assoc_device_id = "device_id";
@ -61,7 +61,7 @@ class MariaDBDeviceRepository implements ISensorRepository {
"SELECT "SELECT
{$s("table_name")}.{$s("col_id")} AS id, {$s("table_name")}.{$s("col_id")} AS id,
{$s("table_name")}.{$s("col_type")} AS type, {$s("table_name")}.{$s("col_type")} AS type,
{$s("table_name")}.{$s("col_description")} AS description, {$s("table_name")}.{$s("col_description")} AS description
FROM {$s("table_name")};", [ FROM {$s("table_name")};", [
] ]
@ -75,10 +75,10 @@ class MariaDBDeviceRepository implements ISensorRepository {
"SELECT "SELECT
{$s("table_name")}.{$s("col_id")} AS id, {$s("table_name")}.{$s("col_id")} AS id,
{$s("table_name")}.{$s("col_type")} AS type, {$s("table_name")}.{$s("col_type")} AS type,
{$s("table_name")}.{$s("col_description")} AS description, {$s("table_name")}.{$s("col_description")} AS description
FROM {$s("table_name")} FROM {$s("table_name_assoc")}
JOIN {$s("table_name_assoc")} ON JOIN {$s("table_name")}
{$s("table_name_assoc")}.{$s("col_assoc_sensor_id")} ON {$s("table_name")}.{$s("col_id")} = {$s("table_name_assoc")}.{$s("col_assoc_sensor_id")}
WHERE {$s("table_name_assoc")}.{$s("col_assoc_device_id")} = :device_id;", [ WHERE {$s("table_name_assoc")}.{$s("col_assoc_device_id")} = :device_id;", [
"device_id" => $device_id "device_id" => $device_id
] ]