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 }