Skip to content

Commit 8d96262

Browse files
committed
chore(tsdb): tidy up code
1 parent b841e64 commit 8d96262

File tree

5 files changed

+45
-39
lines changed

5 files changed

+45
-39
lines changed

pkg/tsdb/influxdb/influxdb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,6 @@ func (e *InfluxDBExecutor) createRequest(query string) (*http.Request, error) {
127127
req.SetBasicAuth(e.BasicAuthUser, e.BasicAuthPassword)
128128
}
129129

130-
glog.Debug("influxdb request", "url", req.URL.String())
130+
glog.Debug("Influxdb request", "url", req.URL.String())
131131
return req, nil
132132
}

pkg/tsdb/influxdb/model_parser.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,6 @@ func (*InfluxdbQueryParser) parseQueryPart(model *simplejson.Json) (*QueryPart,
134134
}
135135

136136
return qp, nil
137-
//return &QueryPart{Type: typ, Params: params}, nil
138137
}
139138

140139
func (qp *InfluxdbQueryParser) parseGroupBy(model *simplejson.Json) ([]*QueryPart, error) {

pkg/tsdb/influxdb/query_builder.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,17 @@ import (
99

1010
type QueryBuilder struct{}
1111

12-
func renderTags(query *Query) []string {
12+
func (qb *QueryBuilder) Build(query *Query, queryContext *tsdb.QueryContext) (string, error) {
13+
res := qb.renderSelectors(query, queryContext)
14+
res += qb.renderMeasurement(query)
15+
res += qb.renderWhereClause(query)
16+
res += qb.renderTimeFilter(query, queryContext)
17+
res += qb.renderGroupBy(query, queryContext)
18+
19+
return res, nil
20+
}
21+
22+
func (qb *QueryBuilder) renderTags(query *Query) []string {
1323
var res []string
1424
for i, tag := range query.Tags {
1525
str := ""
@@ -29,17 +39,7 @@ func renderTags(query *Query) []string {
2939
return res
3040
}
3141

32-
func (*QueryBuilder) Build(query *Query, queryContext *tsdb.QueryContext) (string, error) {
33-
res := renderSelectors(query, queryContext)
34-
res += renderMeasurement(query)
35-
res += renderWhereClause(query)
36-
res += renderTimeFilter(query, queryContext)
37-
res += renderGroupBy(query, queryContext)
38-
39-
return res, nil
40-
}
41-
42-
func renderTimeFilter(query *Query, queryContext *tsdb.QueryContext) string {
42+
func (qb *QueryBuilder) renderTimeFilter(query *Query, queryContext *tsdb.QueryContext) string {
4343
from := "now() - " + queryContext.TimeRange.From
4444
to := ""
4545

@@ -50,7 +50,7 @@ func renderTimeFilter(query *Query, queryContext *tsdb.QueryContext) string {
5050
return fmt.Sprintf("time > %s%s", from, to)
5151
}
5252

53-
func renderSelectors(query *Query, queryContext *tsdb.QueryContext) string {
53+
func (qb *QueryBuilder) renderSelectors(query *Query, queryContext *tsdb.QueryContext) string {
5454
res := "SELECT "
5555

5656
var selectors []string
@@ -66,7 +66,7 @@ func renderSelectors(query *Query, queryContext *tsdb.QueryContext) string {
6666
return res + strings.Join(selectors, ", ")
6767
}
6868

69-
func renderMeasurement(query *Query) string {
69+
func (qb *QueryBuilder) renderMeasurement(query *Query) string {
7070
policy := ""
7171
if query.Policy == "" || query.Policy == "default" {
7272
policy = ""
@@ -76,9 +76,9 @@ func renderMeasurement(query *Query) string {
7676
return fmt.Sprintf(` FROM %s"%s"`, policy, query.Measurement)
7777
}
7878

79-
func renderWhereClause(query *Query) string {
79+
func (qb *QueryBuilder) renderWhereClause(query *Query) string {
8080
res := " WHERE "
81-
conditions := renderTags(query)
81+
conditions := qb.renderTags(query)
8282
res += strings.Join(conditions, " ")
8383
if len(conditions) > 0 {
8484
res += " AND "
@@ -87,7 +87,7 @@ func renderWhereClause(query *Query) string {
8787
return res
8888
}
8989

90-
func renderGroupBy(query *Query, queryContext *tsdb.QueryContext) string {
90+
func (qb *QueryBuilder) renderGroupBy(query *Query, queryContext *tsdb.QueryContext) string {
9191
groupBy := ""
9292
for i, group := range query.GroupBy {
9393
if i == 0 {

pkg/tsdb/influxdb/query_builder_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,16 @@ func TestInfluxdbQueryBuilder(t *testing.T) {
5656

5757
Convey("can render time range", func() {
5858
query := Query{}
59+
builder := &QueryBuilder{}
5960
Convey("render from: 2h to now-1h", func() {
6061
query := Query{}
6162
queryContext := &tsdb.QueryContext{TimeRange: tsdb.NewTimeRange("2h", "now-1h")}
62-
So(renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 2h and time < now() - 1h")
63+
So(builder.renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 2h and time < now() - 1h")
6364
})
6465

6566
Convey("render from: 10m", func() {
6667
queryContext := &tsdb.QueryContext{TimeRange: tsdb.NewTimeRange("10m", "now")}
67-
So(renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 10m")
68+
So(builder.renderTimeFilter(&query, queryContext), ShouldEqual, "time > now() - 10m")
6869
})
6970
})
7071
})

pkg/tsdb/influxdb/response_parser.go

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,39 @@ func (rp *ResponseParser) Parse(response *Response) *tsdb.QueryResult {
1515
queryRes := tsdb.NewQueryResult()
1616

1717
for _, result := range response.Results {
18-
rp.parseResult(result.Series, queryRes)
18+
queryRes.Series = append(queryRes.Series, rp.transformRows(result.Series, queryRes)...)
1919
}
2020

2121
return queryRes
2222
}
2323

24-
func (rp *ResponseParser) parseResult(result []Row, queryResult *tsdb.QueryResult) {
25-
for _, r := range result {
26-
for columnIndex, column := range r.Columns {
24+
func (rp *ResponseParser) transformRows(rows []Row, queryResult *tsdb.QueryResult) tsdb.TimeSeriesSlice {
25+
var result tsdb.TimeSeriesSlice
26+
27+
for _, row := range rows {
28+
for columnIndex, column := range row.Columns {
2729
if column == "time" {
2830
continue
2931
}
3032

3133
var points tsdb.TimeSeriesPoints
32-
for _, k := range r.Values {
33-
points = append(points, rp.parseTimepoint(k, columnIndex))
34+
for _, valuePair := range row.Values {
35+
point, err := rp.parseTimepoint(valuePair, columnIndex)
36+
if err == nil {
37+
points = append(points, point)
38+
}
3439
}
35-
36-
queryResult.Series = append(queryResult.Series, &tsdb.TimeSeries{
37-
Name: rp.formatName(r, column),
40+
result = append(result, &tsdb.TimeSeries{
41+
Name: rp.formatSerieName(row, column),
3842
Points: points,
3943
})
4044
}
4145
}
46+
47+
return result
4248
}
4349

44-
func (rp *ResponseParser) formatName(row Row, column string) string {
50+
func (rp *ResponseParser) formatSerieName(row Row, column string) string {
4551
var tags []string
4652

4753
for k, v := range row.Tags {
@@ -56,30 +62,30 @@ func (rp *ResponseParser) formatName(row Row, column string) string {
5662
return fmt.Sprintf("%s.%s%s", row.Name, column, tagText)
5763
}
5864

59-
func (rp *ResponseParser) parseTimepoint(k []interface{}, valuePosition int) tsdb.TimePoint {
60-
var value null.Float = rp.parseValue(k[valuePosition])
65+
func (rp *ResponseParser) parseTimepoint(valuePair []interface{}, valuePosition int) (tsdb.TimePoint, error) {
66+
var value null.Float = rp.parseValue(valuePair[valuePosition])
6167

62-
timestampNumber, _ := k[0].(json.Number)
68+
timestampNumber, _ := valuePair[0].(json.Number)
6369
timestamp, err := timestampNumber.Float64()
6470
if err != nil {
65-
glog.Error("Invalid timestamp format. This should never happen!")
71+
return tsdb.TimePoint{}, err
6672
}
6773

68-
return tsdb.NewTimePoint(value, timestamp)
74+
return tsdb.NewTimePoint(value, timestamp), nil
6975
}
7076

7177
func (rp *ResponseParser) parseValue(value interface{}) null.Float {
72-
num, ok := value.(json.Number)
78+
number, ok := value.(json.Number)
7379
if !ok {
7480
return null.FloatFromPtr(nil)
7581
}
7682

77-
fvalue, err := num.Float64()
83+
fvalue, err := number.Float64()
7884
if err == nil {
7985
return null.FloatFrom(fvalue)
8086
}
8187

82-
ivalue, err := num.Int64()
88+
ivalue, err := number.Int64()
8389
if err == nil {
8490
return null.FloatFrom(float64(ivalue))
8591
}

0 commit comments

Comments
 (0)