model_parser.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package mqe
  2. import (
  3. "github.com/grafana/grafana/pkg/components/simplejson"
  4. "github.com/grafana/grafana/pkg/tsdb"
  5. )
  6. type MQEQueryParser struct{}
  7. func (qp *MQEQueryParser) Parse(model *simplejson.Json, dsInfo *tsdb.DataSourceInfo, queryContext *tsdb.QueryContext) (*MQEQuery, error) {
  8. query := &MQEQuery{TimeRange: queryContext.TimeRange}
  9. query.AddAppToAlias = model.Get("addAppToAlias").MustBool(false)
  10. query.AddHostToAlias = model.Get("addHostToAlias").MustBool(false)
  11. query.UseRawQuery = model.Get("rawQuery").MustBool(false)
  12. query.RawQuery = model.Get("query").MustString("")
  13. query.Apps = model.Get("apps").MustStringArray([]string{})
  14. query.Hosts = model.Get("hosts").MustStringArray([]string{})
  15. var metrics []MQEMetric
  16. var err error
  17. for _, metricsObj := range model.Get("metrics").MustArray() {
  18. metricJson := simplejson.NewFromAny(metricsObj)
  19. var m MQEMetric
  20. m.Alias = metricJson.Get("alias").MustString("")
  21. m.Metric, err = metricJson.Get("metric").String()
  22. if err != nil {
  23. return nil, err
  24. }
  25. metrics = append(metrics, m)
  26. }
  27. query.Metrics = metrics
  28. return query, nil
  29. }