2022-08-13 23:33:50 +02:00
|
|
|
package services
|
|
|
|
|
|
|
|
|
|
type SensorsService struct {
|
|
|
|
|
ctx *Context
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type sensorItem struct {
|
|
|
|
|
Sensor string `json:"sensor"`
|
|
|
|
|
LastUpdate string `json:"lastUpdate"`
|
|
|
|
|
Config map[string]string `json:"config"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *SensorsService) GetList() ([]sensorItem, error) {
|
2022-08-23 23:35:36 +02:00
|
|
|
sensors := make([]sensorItem, 0)
|
2022-08-13 23:33:50 +02:00
|
|
|
var sensor string
|
|
|
|
|
var lastUpdate string
|
|
|
|
|
|
|
|
|
|
rows, err := s.ctx.DB.Query("SELECT sensor, MAX(timestamp) last_update FROM sensor_values GROUP BY sensor")
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
defer rows.Close()
|
|
|
|
|
|
|
|
|
|
for rows.Next() {
|
|
|
|
|
err := rows.Scan(&sensor, &lastUpdate)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
config, err := s.ctx.Services.SensorConfig.GetValues(sensor)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sensors = append(sensors, sensorItem{Sensor: sensor, LastUpdate: lastUpdate, Config: config})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = rows.Err()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sensors, nil
|
|
|
|
|
}
|