graphicek/services/sensors_service.go

48 lines
920 B
Go

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) {
var sensors []sensorItem
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
}