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 }