influxquerybuilder

package module
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2018 License: MIT Imports: 4 Imported by: 0

README

Influx Query Builder

Build Status Coverage Status Codacy Badge

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
builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupBy("10m").
  Build()

Output:

SELECT temperature,humidity FROM "measurement" GROUP BY time(10m)
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
}
*/

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
	Limit         uint
	Offset        uint
	Order         string
	IsLimitSet    bool
	IsOffsetSet   bool
}

CurrentQuery Get current query

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) 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
	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