mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-06-20 14:16:51 +08:00
133 lines
2.7 KiB
Go
133 lines
2.7 KiB
Go
package godruid
|
|
|
|
// Defines some small spec like structs here.
|
|
|
|
// ---------------------------------
|
|
// LimitSpec
|
|
// ---------------------------------
|
|
|
|
type Limit struct {
|
|
Type string `json:"type"`
|
|
Limit int `json:"limit"`
|
|
Columns []Column `json:"columns,omitempty"`
|
|
}
|
|
|
|
const (
|
|
DirectionASC = "ASCENDING"
|
|
DirectionDESC = "DESCENDING"
|
|
)
|
|
|
|
type Column struct {
|
|
AsNumber bool `json:"asNumber"`
|
|
Dimension string `json:"dimension"`
|
|
Direction string `json:"direction"`
|
|
}
|
|
|
|
func LimitDefault(limit int, columns ...[]Column) *Limit {
|
|
var realColums []Column
|
|
if len(columns) > 0 {
|
|
realColums = columns[0]
|
|
}
|
|
return &Limit{
|
|
Type: "default",
|
|
Limit: limit,
|
|
Columns: realColums,
|
|
}
|
|
}
|
|
|
|
// ---------------------------------
|
|
// SearchQuerySpec
|
|
// ---------------------------------
|
|
|
|
type SearchQuery struct {
|
|
Type string `json:"type"`
|
|
Value interface{} `json:"value,omitempty"`
|
|
Values []interface{} `json:"values,omitempty"`
|
|
}
|
|
|
|
func SearchQueryInsensitiveContains(value interface{}) *SearchQuery {
|
|
return &SearchQuery{
|
|
Type: "insensitive_contains",
|
|
Value: value,
|
|
}
|
|
}
|
|
|
|
func SearchQueryFragmentSearch(values []interface{}) *SearchQuery {
|
|
return &SearchQuery{
|
|
Type: "fragment",
|
|
Values: values,
|
|
}
|
|
}
|
|
|
|
// ---------------------------------
|
|
// ToInclude
|
|
// ---------------------------------
|
|
|
|
type ToInclude struct {
|
|
Type string `json:"type"`
|
|
Columns []string `json:"columns,omitempty"`
|
|
}
|
|
|
|
var (
|
|
ToIncludeAll = &ToInclude{Type: "All"}
|
|
ToIncludeNone = &ToInclude{Type: "None"}
|
|
)
|
|
|
|
func ToIncludeList(columns []string) *ToInclude {
|
|
return &ToInclude{
|
|
Type: "list",
|
|
Columns: columns,
|
|
}
|
|
}
|
|
|
|
// ---------------------------------
|
|
// TopNMetricSpec
|
|
// ---------------------------------
|
|
|
|
type TopNMetric struct {
|
|
Type string `json:"type"`
|
|
Metric interface{} `json:"metric,omitempty"`
|
|
PreviousStop string `json:"previousStop"`
|
|
}
|
|
|
|
func TopNMetricNumeric(metric string) *TopNMetric {
|
|
return &TopNMetric{
|
|
Type: "numeric",
|
|
Metric: metric,
|
|
}
|
|
}
|
|
|
|
func TopNMetricLexicographic(previousStop string) *TopNMetric {
|
|
return &TopNMetric{
|
|
Type: "lexicographic",
|
|
PreviousStop: previousStop,
|
|
}
|
|
}
|
|
|
|
func TopNMetricAlphaNumeric(previousStop string) *TopNMetric {
|
|
return &TopNMetric{
|
|
Type: "alphaNumeric",
|
|
PreviousStop: previousStop,
|
|
}
|
|
}
|
|
|
|
func TopNMetricInverted(metric *TopNMetric) *TopNMetric {
|
|
return &TopNMetric{
|
|
Type: "inverted",
|
|
Metric: metric,
|
|
}
|
|
}
|
|
|
|
// ---------------------------------
|
|
// SearchSortSpec
|
|
// ---------------------------------
|
|
|
|
type SearchSort struct {
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
var (
|
|
SearchSortLexicographic = &SearchSort{Type: "lexicographic"}
|
|
SearchSortStrlen = &SearchSort{Type: "strlen"}
|
|
)
|