mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-19 16:36:45 +00:00
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
|
|
package cumulative
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
v3 "go.signoz.io/signoz/pkg/query-service/model/v3"
|
||
|
|
)
|
||
|
|
|
||
|
|
// groupingSets returns a string of comma separated tags for group by clause
|
||
|
|
// `ts` is always added to the group by clause
|
||
|
|
func groupingSets(tags ...string) string {
|
||
|
|
withTs := append(tags, "ts")
|
||
|
|
return fmt.Sprintf(`GROUPING SETS ( (%s), (%s) )`, strings.Join(withTs, ", "), strings.Join(tags, ", "))
|
||
|
|
}
|
||
|
|
|
||
|
|
// groupingSetsByAttributeKeyTags returns a string of comma separated tags for group by clause
|
||
|
|
func groupingSetsByAttributeKeyTags(tags ...v3.AttributeKey) string {
|
||
|
|
groupTags := []string{}
|
||
|
|
for _, tag := range tags {
|
||
|
|
groupTags = append(groupTags, tag.Key)
|
||
|
|
}
|
||
|
|
return groupingSets(groupTags...)
|
||
|
|
}
|
||
|
|
|
||
|
|
// groupBy returns a string of comma separated tags for group by clause
|
||
|
|
func groupByAttributeKeyTags(tags ...v3.AttributeKey) string {
|
||
|
|
groupTags := []string{}
|
||
|
|
for _, tag := range tags {
|
||
|
|
groupTags = append(groupTags, tag.Key)
|
||
|
|
}
|
||
|
|
groupTags = append(groupTags, "ts")
|
||
|
|
return strings.Join(groupTags, ", ")
|
||
|
|
}
|
||
|
|
|
||
|
|
// orderBy returns a string of comma separated tags for order by clause
|
||
|
|
// if the order is not specified, it defaults to ASC
|
||
|
|
func orderByAttributeKeyTags(items []v3.OrderBy, tags []v3.AttributeKey) string {
|
||
|
|
var orderBy []string
|
||
|
|
for _, tag := range tags {
|
||
|
|
found := false
|
||
|
|
for _, item := range items {
|
||
|
|
if item.ColumnName == tag.Key {
|
||
|
|
found = true
|
||
|
|
orderBy = append(orderBy, fmt.Sprintf("%s %s", item.ColumnName, item.Order))
|
||
|
|
break
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if !found {
|
||
|
|
orderBy = append(orderBy, fmt.Sprintf("%s ASC", tag.Key))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
orderBy = append(orderBy, "ts ASC")
|
||
|
|
|
||
|
|
return strings.Join(orderBy, ", ")
|
||
|
|
}
|