Skip to content

Commit

Permalink
added head query to help users find earliest occurrence of data for a…
Browse files Browse the repository at this point in the history
… job (#2)
  • Loading branch information
seanshahkarami authored Dec 1, 2022
1 parent 9145d9a commit 64e0ae3
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
9 changes: 9 additions & 0 deletions influx_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,15 @@ func buildFluxQuery(bucket string, query *Query) (string, error) {
parts = append(parts, filterSubquery)
}

if query.Head != nil && query.Tail != nil {
return "", fmt.Errorf("head and tail cannot both be specified")
}

// add head subquery if included
if query.Head != nil {
parts = append(parts, fmt.Sprintf("limit(n:%d)", *query.Head))
}

// add tail subquery if included
if query.Tail != nil {
parts = append(parts, fmt.Sprintf("tail(n:%d)", *query.Tail))
Expand Down
21 changes: 20 additions & 1 deletion influx_backend_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,29 @@ func TestBuildFluxQuery(t *testing.T) {
Expect: ``,
ShouldFail: true,
},
"StartAndEndRange": {
"StartEnd": {
Query: &Query{
Start: "-4h",
End: "-2h",
},
Expect: `from(bucket:"mybucket") |> range(start:-4h,stop:-2h)`,
},
"StartEndTail": {
Query: &Query{
Start: "-4h",
End: "-2h",
Tail: intptr(3),
},
Expect: `from(bucket:"mybucket") |> range(start:-4h,stop:-2h) |> tail(n:3)`,
},
"StartEndHead": {
Query: &Query{
Start: "-4h",
End: "-2h",
Head: intptr(3),
},
Expect: `from(bucket:"mybucket") |> range(start:-4h,stop:-2h) |> limit(n:3)`,
},
"ExactFilter": {
Query: &Query{
Start: "-4h",
Expand Down Expand Up @@ -163,6 +178,10 @@ func TestBuildFluxBadQuery(t *testing.T) {
{
End: "); danger",
},
{
Head: intptr(3),
Tail: intptr(3),
},
}

for _, query := range testcases {
Expand Down
1 change: 1 addition & 0 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type Query struct {
Bucket *string `json:"bucket,omitempty"`
Start string `json:"start,omitempty"`
End string `json:"end,omitempty"`
Head *int `json:"head,omitempty"`
Tail *int `json:"tail,omitempty"`
Filter map[string]string `json:"filter"`
}
Expand Down

0 comments on commit 64e0ae3

Please sign in to comment.