query unknown fieldtypes in db

This commit is contained in:
Joel Schmid 2021-04-09 23:29:02 +02:00
parent 5aed4560e9
commit e483794ce1
3 changed files with 12 additions and 14 deletions

View file

@ -23,7 +23,7 @@ func NewInfluxStorage(cfg config.InfluxConfig) (*influxStorage, error) {
influx := new(influxStorage)
influx.config = cfg
influx.client = influxdb2.NewClient(cfg.Host, cfg.Token)
influx.measurement = "data"
influx.measurement = "weather-data"
log.Print("Successfully created influx-client")
return influx, nil
}
@ -60,8 +60,8 @@ func (storage *influxStorage) createFluxQuery(query *WeatherQuery) string {
fields := ""
concat := ""
for _, sensorValueType := range GetSensorValueTypes() {
if query.Values[sensorValueType] {
for sensorValueType, value := range query.Values {
if value {
fields = fmt.Sprintf("%v %v r._field == \"%v\"", fields, concat, string(sensorValueType))
concat = "or"
}
@ -98,11 +98,7 @@ func (storage *influxStorage) executeFluxQuery(query string) ([]*WeatherData, er
data, contained := containsWeatherData(queryResults, sensorId, timestamp)
for _, sensorValueType := range GetSensorValueTypes() {
if result.Record().Field() == string(sensorValueType) {
data.Values[sensorValueType] = result.Record().Value().(float64)
}
}
data.Values[SensorValueType(result.Record().Field())] = result.Record().Value().(float64)
if !contained {
data.SensorId = sensorId

View file

@ -56,8 +56,8 @@ func NewWeatherData() *WeatherData {
//OnlyQueriedValues remove all values not contained by the WeatherQuery
func (data *WeatherData) OnlyQueriedValues(query *WeatherQuery) *WeatherData {
for _, sensorValueType := range GetSensorValueTypes() {
if !query.Values[sensorValueType] {
for sensorValueType, value := range query.Values {
if !value {
delete(data.Values, sensorValueType)
}
}

View file

@ -57,10 +57,12 @@ func ParseFromUrlQuery(query url.Values) (*WeatherQuery, error) {
}
}
for _, sensorValueType := range GetSensorValueTypes() {
queryParam := query.Get(string(sensorValueType))
if bval, err := strconv.ParseBool(queryParam); err == nil {
result.Values[sensorValueType] = bval
for k, v := range query {
if k == "start" || k == "end" {
continue
}
if bval, err := strconv.ParseBool(v[0]); err == nil {
result.Values[SensorValueType(k)] = bval
}
}