mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
|  | package models | ||
|  | 
 | ||
|  | import "github.com/aws/aws-sdk-go/service/cloudwatch" | ||
|  | 
 | ||
|  | // queryRowResponse represents the GetMetricData response for a query row in the query editor.
 | ||
|  | type QueryRowResponse struct { | ||
|  | 	partialDataSet         map[string]*cloudwatch.MetricDataResult | ||
|  | 	ErrorCodes             map[string]bool | ||
|  | 	HasArithmeticError     bool | ||
|  | 	ArithmeticErrorMessage string | ||
|  | 	Metrics                []*cloudwatch.MetricDataResult | ||
|  | 	StatusCode             string | ||
|  | } | ||
|  | 
 | ||
|  | func NewQueryRowResponse(errors map[string]bool) QueryRowResponse { | ||
|  | 	return QueryRowResponse{ | ||
|  | 		partialDataSet:         make(map[string]*cloudwatch.MetricDataResult), | ||
|  | 		ErrorCodes:             errors, | ||
|  | 		HasArithmeticError:     false, | ||
|  | 		ArithmeticErrorMessage: "", | ||
|  | 		Metrics:                []*cloudwatch.MetricDataResult{}, | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func (q *QueryRowResponse) AddMetricDataResult(mdr *cloudwatch.MetricDataResult) { | ||
|  | 	if partialData, ok := q.partialDataSet[*mdr.Label]; ok { | ||
|  | 		partialData.Timestamps = append(partialData.Timestamps, mdr.Timestamps...) | ||
|  | 		partialData.Values = append(partialData.Values, mdr.Values...) | ||
|  | 		q.StatusCode = *mdr.StatusCode | ||
|  | 		if *mdr.StatusCode != "PartialData" { | ||
|  | 			delete(q.partialDataSet, *mdr.Label) | ||
|  | 		} | ||
|  | 		return | ||
|  | 	} | ||
|  | 
 | ||
|  | 	q.Metrics = append(q.Metrics, mdr) | ||
|  | 	q.StatusCode = *mdr.StatusCode | ||
|  | 	if *mdr.StatusCode == "PartialData" { | ||
|  | 		q.partialDataSet[*mdr.Label] = mdr | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | func (q *QueryRowResponse) AddArithmeticError(message *string) { | ||
|  | 	q.HasArithmeticError = true | ||
|  | 	q.ArithmeticErrorMessage = *message | ||
|  | } |