graphicek/server/services/sensors_service.go

48 lines
928 B
Go
Raw Normal View History

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
}