ql

package
v0.0.0-...-d8ac9bd Latest Latest
Warning

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

Go to latest
Published: May 18, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AliasedExpression

type AliasedExpression struct {
	Pos lexer.Position

	Expression *Expression `parser:"@@"`
	Unit       *units.Unit `parser:"( @@ )?"`
	As         string      `parser:"( 'as' @String )?"`
}

AliasedExpression handles expression AS name to create aliases

type Expression

type Expression struct {
	Pos      lexer.Position
	Function *Function             `parser:"( @@"`
	Metric   *Metric               `parser:"| @@ )"`
	Using    string                `parser:"( 'using' @String"`
	Modifier []*ExpressionModifier `parser:"| (@@)+ )?"`
}

Expression handles function calls or direct metric values

type ExpressionModifier

type ExpressionModifier struct {
	Pos    lexer.Position
	Range  *QueryRange    `parser:"( @@"`
	Offset *time.Duration `parser:"| 'offset' @@ )"`
}

type Function

type Function struct {
	Pos lexer.Position

	Name        string        `parser:"@Ident"`
	Expressions []*Expression `parser:"'(' (@@ (',' @@)*)? ')'"`
}

Function handles function calls

type Histogram

type Histogram struct {
	Pos lexer.Position

	Expression *AliasedExpression `parser:"'histogram' @@"`
}

type Metric

type Metric struct {
	Pos lexer.Position

	Metric []string `parser:"@Ident ( '.' @Ident )*"`
	Name   string
}

Metric handles a metric reference

type Query

type Query struct {
	Pos        lexer.Position
	QueryRange *QueryRange       `parser:"@@"`
	Using      *UsingDefinitions `parser:"(@@)?"`
	Histogram  []*Histogram      `parser:"( ( @@ )+"`
	WindRose   []*WindRose       `parser:"| ( @@ )+"`
	Limit      int               `parser:"| ( 'limit' @Int )?"`
	Select     []*Select         `parser:"  ( @@ )+ )"`
}

type QueryRange

type QueryRange struct {
	Pos lexer.Position

	At    *time2.Time     `parser:"( 'at' @@"`       // AT time for a specific time
	From  *time2.Time     `parser:"| 'from' @@"`     // FROM time
	For   *time2.Duration `parser:"  'for' @@ "`     // Duration from FROM
	Start *time2.Time     `parser:"| 'between' @@"`  // Between a start time
	End   *time2.Time     `parser:"  'and' @@ )"`    // and an end time
	Every *time2.Duration `parser:"( 'every' @@ )?"` // Every duration time
}

QueryRange defines the time range to query

func (*QueryRange) IsRow

func (a *QueryRange) IsRow() bool

func (*QueryRange) Range

func (a *QueryRange) Range() api.Range

func (*QueryRange) SetTime

func (a *QueryRange) SetTime(t time.Time, every time.Duration, v QueryVisitor) error

type QueryVisitor

type QueryVisitor interface {
	time.TimeVisitor
	units.UnitsVisitor
	Query(*Query) error
	Select(*Select) error
	SelectExpression(*SelectExpression) error
	AliasedExpression(*AliasedExpression) error
	Expression(*Expression) error
	ExpressionModifier(*ExpressionModifier) error
	Function(*Function) error
	Metric(*Metric) error
	QueryRange(*QueryRange) error
	UsingDefinitions(*UsingDefinitions) error
	UsingDefinition(*UsingDefinition) error
	Histogram(*Histogram) error
	WindRose(*WindRose) error
}

type Select

type Select struct {
	Pos lexer.Position

	Expression *SelectExpression `parser:"'select' @@"`
	Limit      int               `parser:"( 'limit' @Int )?"`
}

type SelectExpression

type SelectExpression struct {
	Pos lexer.Position

	Expressions []*AliasedExpression `parser:"@@ ( ',' @@ )*"`
}

type UsingDefinition

type UsingDefinition struct {
	Pos      lexer.Position
	Name     string                `parser:"@String 'as'"`
	Modifier []*ExpressionModifier `parser:"(@@)+"`
}

type UsingDefinitions

type UsingDefinitions struct {
	Pos  lexer.Position
	Defs []*UsingDefinition `parser:" 'declare' @@ (',' @@)* "`
}

type WindRose

type WindRose struct {
	Pos lexer.Position

	Degrees *Expression      `parser:"'windrose' @@"`
	Speed   *Expression      `parser:"',' @@"`
	Options []WindRoseOption `parser:"('as' @@ (',' @@)* )?"`
}

type WindRoseOption

type WindRoseOption struct {
	Pos   lexer.Position
	Rose  bool `parser:"( @'rose'"`
	Count bool `parser:"| @'count'"`
	Max   bool `parser:"| @'max')"`
}

Jump to

Keyboard shortcuts

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