refactor(mqe): reduce duplication
This commit is contained in:
+34
-43
@@ -42,63 +42,54 @@ func (q *Query) Build(availableSeries []string) ([]QueryToSend, error) {
|
||||
where := q.buildWhereClause()
|
||||
functions := q.buildFunctionList()
|
||||
|
||||
for _, v := range q.Metrics {
|
||||
if !containsWildcardPattern.Match([]byte(v.Metric)) {
|
||||
alias := ""
|
||||
if v.Alias != "" {
|
||||
alias = fmt.Sprintf(" {%s}", v.Alias)
|
||||
}
|
||||
for _, metric := range q.Metrics {
|
||||
alias := ""
|
||||
if metric.Alias != "" {
|
||||
alias = fmt.Sprintf(" {%s}", metric.Alias)
|
||||
}
|
||||
|
||||
rawQuery := fmt.Sprintf(
|
||||
"`%s`%s%s %s from %v to %v",
|
||||
v.Metric,
|
||||
functions,
|
||||
alias,
|
||||
where,
|
||||
q.TimeRange.GetFromAsMsEpoch(),
|
||||
q.TimeRange.GetToAsMsEpoch())
|
||||
if !containsWildcardPattern.Match([]byte(metric.Metric)) {
|
||||
rawQuery := q.renderQuerystring(metric.Metric, functions, alias, where, q.TimeRange)
|
||||
queriesToSend = append(queriesToSend, QueryToSend{
|
||||
RawQuery: rawQuery,
|
||||
QueryRef: q,
|
||||
})
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
m := strings.Replace(metric.Metric, "*", ".*", -1)
|
||||
mp, err := regexp.Compile(m)
|
||||
|
||||
m := strings.Replace(v.Metric, "*", ".*", -1)
|
||||
mp, err := regexp.Compile(m)
|
||||
if err != nil {
|
||||
log.Error2("failed to compile regex for ", "metric", m)
|
||||
continue
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Error2("failed to compile regex for ", "metric", m)
|
||||
continue
|
||||
}
|
||||
|
||||
//TODO: this lookup should be cached
|
||||
for _, a := range availableSeries {
|
||||
if mp.Match([]byte(a)) {
|
||||
alias := ""
|
||||
if v.Alias != "" {
|
||||
alias = fmt.Sprintf(" {%s}", v.Alias)
|
||||
//TODO: this lookup should be cached
|
||||
for _, wildcardMatch := range availableSeries {
|
||||
if mp.Match([]byte(wildcardMatch)) {
|
||||
rawQuery := q.renderQuerystring(wildcardMatch, functions, alias, where, q.TimeRange)
|
||||
queriesToSend = append(queriesToSend, QueryToSend{
|
||||
RawQuery: rawQuery,
|
||||
QueryRef: q,
|
||||
})
|
||||
}
|
||||
|
||||
rawQuery := fmt.Sprintf(
|
||||
"`%s`%s%s %s from %v to %v",
|
||||
a,
|
||||
functions,
|
||||
alias,
|
||||
where,
|
||||
q.TimeRange.GetFromAsMsEpoch(),
|
||||
q.TimeRange.GetToAsMsEpoch())
|
||||
|
||||
queriesToSend = append(queriesToSend, QueryToSend{
|
||||
RawQuery: rawQuery,
|
||||
QueryRef: q,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return queriesToSend, nil
|
||||
}
|
||||
|
||||
func (q *Query) renderQuerystring(path, functions, alias, where string, timerange *tsdb.TimeRange) string {
|
||||
return fmt.Sprintf(
|
||||
"`%s`%s%s %s from %v to %v",
|
||||
path,
|
||||
functions,
|
||||
alias,
|
||||
where,
|
||||
q.TimeRange.GetFromAsMsEpoch(),
|
||||
q.TimeRange.GetToAsMsEpoch())
|
||||
}
|
||||
|
||||
func (q *Query) buildFunctionList() string {
|
||||
functions := ""
|
||||
for _, v := range q.FunctionList {
|
||||
|
||||
Reference in New Issue
Block a user