PowerEngine/wave_record/database/influxdb_operator.go

49 lines
1.5 KiB
Go
Raw Normal View History

// Package database define database operation functions
package database
import (
"context"
"time"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
"github.com/influxdata/influxdb-client-go/v2/api"
"go.uber.org/zap"
)
// WriterPointIntoInfluxDB return the result of storing point into influxdb
func WriterPointIntoInfluxDB(ctx context.Context, writeAPI api.WriteAPIBlocking, measurement string, tags map[string]string, fields map[string]interface{}) error {
// TODO 增加api创建示例
// aPI := client.WriteAPIBlocking("my-org", "my-bucket")
point := influxdb2.NewPoint(measurement, tags, fields, time.Now())
return writeAPI.WritePoint(ctx, point)
}
// QueryPointFromInfluxDB return the result of query from influxdb by special parameters
// Get query client
// queryAPI := client.QueryAPI(org)
func QueryPointFromInfluxDB(ctx context.Context, queryAPI api.QueryAPI, logger *zap.Logger) ([]interface{}, error) {
dataList := make([]interface{}, 0)
// get query result
// TODO 增加初始化示例
query := InitQueryByPara()
results, err := queryAPI.Query(ctx, query)
if err != nil {
logger.Error("query data by parameters failed", zap.Error(err))
return nil, err
}
for results.Next() {
if results.TableChanged() {
logger.Info("find new result table", zap.String("table_metadata", results.TableMetadata().String()))
continue
}
dataList = append(dataList, results.Record().Value())
}
if results.Err() != nil {
logger.Error("query parsing error failed", zap.Error(results.Err()))
return nil, results.Err()
}
return nil, nil
}