-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathdimension_spec.go
72 lines (62 loc) · 1.67 KB
/
dimension_spec.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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,
}
}