model_parser.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. type MQEQueryParser struct{}
  8. func (qp *MQEQueryParser) Parse(model *simplejson.Json, dsInfo *models.DataSource, queryContext *tsdb.QueryContext) (*MQEQuery, error) {
  9. query := &MQEQuery{TimeRange: queryContext.TimeRange}
  10. query.AddAppToAlias = model.Get("addAppToAlias").MustBool(false)
  11. query.AddHostToAlias = model.Get("addHostToAlias").MustBool(false)
  12. query.UseRawQuery = model.Get("rawQuery").MustBool(false)
  13. query.RawQuery = model.Get("query").MustString("")
  14. query.Apps = model.Get("apps").MustStringArray([]string{})
  15. query.Hosts = model.Get("hosts").MustStringArray([]string{})
  16. var metrics []MQEMetric
  17. var err error
  18. for _, metricsObj := range model.Get("metrics").MustArray() {
  19. metricJson := simplejson.NewFromAny(metricsObj)
  20. var m MQEMetric
  21. m.Alias = metricJson.Get("alias").MustString("")
  22. m.Metric, err = metricJson.Get("metric").String()
  23. if err != nil {
  24. return nil, err
  25. }
  26. metrics = append(metrics, m)
  27. }
  28. query.Metrics = metrics
  29. return query, nil
  30. }