influxquerybuilder

package module
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2019 License: MIT Imports: 4 Imported by: 0

README

Influx Query Builder

Build Status Coverage Status Codacy Badge Go Report Card

The super lightweight InfluxDB query builder implemented in Go.

Installation

go get -u github.com/benjamin658/influx-query-builder

Query Builder Usage

Simple query
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement"
Function query
builder := New()
query := builder.
  Select(`MEAN("temperature")`, `SUM("humidity")`).
  From("measurement").
  Build()

Output:

SELECT MEAN("temperature"),SUM("humidity") FROM "measurement"
Query with criteria
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  And("time", "<", "2018-11-02T09:35:25Z").
  Or("tag", "=", "t").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' AND "time" < '2018-11-02T09:35:25Z' OR "tag" = 't'
Brackets criteria

Noted: If you use Where with WhereBrackets, Where will override the WhereBrackets.

Where Brackets
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  WhereBrackets(
    // Passing a new builder as the param
    New().
      Where("time", ">", "2018-11-01T06:33:57.503Z").
      And("time", "<", "2018-11-02T09:35:25Z").
  ).
  Or("tag", "=", "t").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE ("time" > '2018-11-01T06:33:57.503Z' AND "time" < '2018-11-02T09:35:25Z') OR "tag" = 't'
And Brackets
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  AndBrackets(
    // Passing a new builder as the param
    New().
      Where("time", "<", "2018-11-02T09:35:25Z").
      Or("tag", "=", "t"),
  ).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' AND ("time" < '2018-11-02T09:35:25Z' OR "tag" = 't')
Or Brackets
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  OrBrackets(
    // Passing a new builder as the param
    New().
      Where("time", "<", "2018-11-02T09:35:25Z").
      Or("tag", "=", "t"),
  ).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' OR ("time" < '2018-11-02T09:35:25Z' OR "tag" = 't')
Group By time duration
builder := New()
duration := NewDuration()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupByTime(duration.Minute(10)).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY time(10m)
Group By Tag
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupByTag("sensorId").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY sensorId
Order By time
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Desc().
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" ORDER BY time DESC
Limit and Offset
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Limit(10).
  Offset(5).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" LIMIT 10 OFFSET 5
Reset builder and get a new one
builder := New()
// some code...
builder = builder.Clean()
Get current query struct
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Limit(100).
  Offset(100).
  Asc().
  GetQueryStruct()

/*
type CurrentQuery struct {
  Measurement   string
  Where         Tag
  And           []Tag
  Or            []Tag
  WhereBrackets QueryBuilder
  AndBrackets   []QueryBuilder
  OrBrackets    []QueryBuilder
  Fields        []string
  GroupBy       string
  Limit         uint
  Offset        uint
  Order         string
  IsLimitSet    bool
  IsOffsetSet   bool
}
*/

Deprecated

Group By time
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupBy("10m").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY time(10m)

License


© Ben Hu (benjamin658), 2018-NOW

Released under the MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CurrentQuery added in v1.2.0

type CurrentQuery struct {
	Measurement   string
	Where         Tag
	And           []Tag
	Or            []Tag
	WhereBrackets QueryBuilder
	AndBrackets   []QueryBuilder
	OrBrackets    []QueryBuilder
	Fields        []string
	GroupBy       string
	GroupByTime   string
	GroupByTag    string
	Limit         uint
	Offset        uint
	Order         string
	IsLimitSet    bool
	IsOffsetSet   bool
}

CurrentQuery Get current query

type Duration added in v1.5.0

type Duration interface {
	Nanoseconds(uint) Duration
	Microseconds(uint) Duration
	Milliseconds(uint) Duration
	Second(uint) Duration
	Minute(uint) Duration
	Hour(uint) Duration
	Day(uint) Duration
	Week(uint) Duration
	// contains filtered or unexported methods
}

Duration Duration interface

func NewDuration added in v1.5.0

func NewDuration() Duration

NewDuration New Duration

type DurationType added in v1.5.0

type DurationType struct {
	// contains filtered or unexported fields
}

DurationType DurationType struct

func (*DurationType) Day added in v1.5.0

func (t *DurationType) Day(d uint) Duration

Day Day

func (*DurationType) Hour added in v1.5.0

func (t *DurationType) Hour(d uint) Duration

Hour Hour

func (*DurationType) Microseconds added in v1.5.0

func (t *DurationType) Microseconds(d uint) Duration

Microseconds Microseconds

func (*DurationType) Milliseconds added in v1.5.0

func (t *DurationType) Milliseconds(d uint) Duration

Milliseconds Milliseconds

func (*DurationType) Minute added in v1.5.0

func (t *DurationType) Minute(d uint) Duration

Minute Minute

func (*DurationType) Nanoseconds added in v1.5.0

func (t *DurationType) Nanoseconds(d uint) Duration

Nanoseconds Nanoseconds

func (*DurationType) Second added in v1.5.0

func (t *DurationType) Second(d uint) Duration

Second Second

func (*DurationType) Week added in v1.5.0

func (t *DurationType) Week(d uint) Duration

Week Week

type Query added in v1.1.2

type Query struct {
	// contains filtered or unexported fields
}

Query Query struct

func (*Query) And added in v1.1.2

func (q *Query) And(key string, op string, value interface{}) QueryBuilder

And And criteria

func (*Query) AndBrackets added in v1.1.2

func (q *Query) AndBrackets(builder QueryBuilder) QueryBuilder

AndBrackets AND (...)

func (*Query) Asc added in v1.1.2

func (q *Query) Asc() QueryBuilder

Asc ORDER BY time ASC

func (*Query) Build added in v1.1.2

func (q *Query) Build() string

Build Build query string

func (*Query) Clean added in v1.1.2

func (q *Query) Clean() QueryBuilder

Clean Clean current builder and get a new one

func (*Query) Desc added in v1.1.2

func (q *Query) Desc() QueryBuilder

Desc ORDER BY time DESC

func (*Query) Fill added in v1.1.2

func (q *Query) Fill(fill interface{}) QueryBuilder

Fill FILL(...)

func (*Query) From added in v1.1.2

func (q *Query) From(measurement string) QueryBuilder

From From measurement

func (*Query) GetQueryStruct added in v1.1.2

func (q *Query) GetQueryStruct() CurrentQuery

GetQueryStruct Get query struct

func (*Query) GroupBy added in v1.1.2

func (q *Query) GroupBy(time string) QueryBuilder

GroupBy GROUP BY time

func (*Query) GroupByTag added in v1.5.0

func (q *Query) GroupByTag(tag string) QueryBuilder

GroupByTag GROUP By tag

func (*Query) GroupByTime added in v1.5.0

func (q *Query) GroupByTime(duration Duration) QueryBuilder

GroupByTime GROUP BY time

func (*Query) Limit added in v1.1.2

func (q *Query) Limit(limit uint) QueryBuilder

Limit LIMIT x

func (*Query) Offset added in v1.1.2

func (q *Query) Offset(offset uint) QueryBuilder

Offset OFFSET x

func (*Query) Or added in v1.1.2

func (q *Query) Or(key string, op string, value interface{}) QueryBuilder

Or Or criteria

func (*Query) OrBrackets added in v1.1.2

func (q *Query) OrBrackets(builder QueryBuilder) QueryBuilder

OrBrackets OR (...)

func (*Query) Select added in v1.1.2

func (q *Query) Select(fields ...string) QueryBuilder

Select Select fields...

func (*Query) Where added in v1.1.2

func (q *Query) Where(key string, op string, value interface{}) QueryBuilder

Where Where criteria

func (*Query) WhereBrackets added in v1.1.2

func (q *Query) WhereBrackets(builder QueryBuilder) QueryBuilder

WhereBrackets WHERE (...)

type QueryBuilder

type QueryBuilder interface {
	Select(fields ...string) QueryBuilder
	From(string) QueryBuilder
	Where(string, string, interface{}) QueryBuilder
	And(string, string, interface{}) QueryBuilder
	Or(string, string, interface{}) QueryBuilder
	WhereBrackets(QueryBuilder) QueryBuilder
	AndBrackets(QueryBuilder) QueryBuilder
	OrBrackets(QueryBuilder) QueryBuilder
	GroupBy(string) QueryBuilder
	GroupByTime(Duration) QueryBuilder
	GroupByTag(string) QueryBuilder
	Fill(interface{}) QueryBuilder
	Limit(uint) QueryBuilder
	Offset(uint) QueryBuilder
	Desc() QueryBuilder
	Asc() QueryBuilder
	Build() string
	Clean() QueryBuilder
	GetQueryStruct() CurrentQuery
}

QueryBuilder QueryBuilder interface

func New

func New() QueryBuilder

New New QueryBuilder

type Tag added in v1.1.2

type Tag struct {
	// contains filtered or unexported fields
}

Tag Tag struct

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL