signoz/pkg/query-service/godruid/dimension_spec.go
2021-01-03 18:15:44 +05:30

73 lines
1.7 KiB
Go

package godruid
type DimSpec interface{}
type Dimension struct {
Type string `json:"type"`
Dimension string `json:"dimension"`
OutputName string `json:"outputName"`
DimExtractionFn *DimExtractionFn `json:"dimExtractionFn,omitempty"`
}
type DimExtractionFn struct {
Type string `json:"type"`
Expr string `json:"expr,omitempty"`
Query *SearchQuery `json:"query,omitempty"`
TimeFormat string `json:"timeFormat,omitempty"`
ResultFormat string `json:"resultFormat,omitempty"`
Function string `json:"function,omitempty"`
}
func DimDefault(dimension, outputName string) DimSpec {
return &Dimension{
Type: "default",
Dimension: dimension,
OutputName: outputName,
}
}
func DimExtraction(dimension, outputName string, fn *DimExtractionFn) DimSpec {
return &Dimension{
Type: "extraction",
Dimension: dimension,
OutputName: outputName,
DimExtractionFn: fn,
}
}
func DimExFnRegex(expr string) *DimExtractionFn {
return &DimExtractionFn{
Type: "regex",
Expr: expr,
}
}
func DimExFnPartial(expr string) *DimExtractionFn {
return &DimExtractionFn{
Type: "partial",
Expr: expr,
}
}
func DimExFnSearchQuerySpec(query *SearchQuery) *DimExtractionFn {
return &DimExtractionFn{
Type: "searchQuery",
Query: query,
}
}
func DimExFnTime(timeFormat, resultFormat string) *DimExtractionFn {
return &DimExtractionFn{
Type: "time",
TimeFormat: timeFormat,
ResultFormat: resultFormat,
}
}
func DimExFnJavascript(function string) *DimExtractionFn {
return &DimExtractionFn{
Type: "javascript",
Function: function,
}
}