model_parser.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package mqe
  2. import (
  3. "github.com/grafana/grafana/pkg/components/simplejson"
  4. "github.com/grafana/grafana/pkg/models"
  5. "github.com/grafana/grafana/pkg/tsdb"
  6. )
  7. func NewQueryParser() *QueryParser {
  8. return &QueryParser{}
  9. }
  10. type QueryParser struct{}
  11. func (qp *QueryParser) Parse(model *simplejson.Json, dsInfo *models.DataSource, queryContext *tsdb.QueryContext) (*Query, error) {
  12. query := &Query{TimeRange: queryContext.TimeRange}
  13. query.AddClusterToAlias = model.Get("addClusterToAlias").MustBool(false)
  14. query.AddHostToAlias = model.Get("addHostToAlias").MustBool(false)
  15. query.UseRawQuery = model.Get("rawQuery").MustBool(false)
  16. query.RawQuery = model.Get("query").MustString("")
  17. query.Cluster = model.Get("cluster").MustStringArray([]string{})
  18. query.Hosts = model.Get("hosts").MustStringArray([]string{})
  19. var metrics []Metric
  20. var err error
  21. for _, metricsObj := range model.Get("metrics").MustArray() {
  22. metricJson := simplejson.NewFromAny(metricsObj)
  23. var m Metric
  24. m.Alias = metricJson.Get("alias").MustString("")
  25. m.Metric, err = metricJson.Get("metric").String()
  26. if err != nil {
  27. return nil, err
  28. }
  29. metrics = append(metrics, m)
  30. }
  31. query.Metrics = metrics
  32. var functions []Function
  33. for _, functionListObj := range model.Get("functionList").MustArray() {
  34. functionListJson := simplejson.NewFromAny(functionListObj)
  35. var f Function
  36. f.Func = functionListJson.Get("func").MustString("")
  37. if err != nil {
  38. return nil, err
  39. }
  40. functions = append(functions, f)
  41. }
  42. query.FunctionList = functions
  43. return query, nil
  44. }