29 lines
707 B
Go
29 lines
707 B
Go
package mapper
|
|
|
|
import (
|
|
"alfred/model/common"
|
|
"alfred/model/core"
|
|
"encoding/json"
|
|
"github.com/elastic/go-elasticsearch/v8/esapi"
|
|
)
|
|
|
|
func MapEsApiResponseToDeviceMetricsResponse(search *esapi.Response) ([]core.DeviceMetricsEsResponse, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if len(result.Hits.Hits) == 0 {
|
|
return []core.DeviceMetricsEsResponse{}, &common.InvalidDeviceRequestError{}
|
|
}
|
|
|
|
var deviceMetrics []core.DeviceMetricsEsResponse
|
|
jsonHits, err := json.Marshal(result.Hits.Hits)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err = json.Unmarshal(jsonHits, &deviceMetrics); err != nil {
|
|
return nil, err
|
|
}
|
|
return deviceMetrics, nil
|
|
}
|