69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package mapper
|
|
|
|
import (
|
|
"alfred/model/core/cruise"
|
|
"alfred/model/es"
|
|
"alfred/model/mapper"
|
|
"alfred/utils"
|
|
"encoding/json"
|
|
"errors"
|
|
"github.com/elastic/go-elasticsearch/v8/esapi"
|
|
)
|
|
|
|
type CruiseControlMapper interface {
|
|
MapCruiseResponseToList(result es.ESResponse) ([]string, error)
|
|
MapCruiseResponseToString(result es.ESResponse) (string, error)
|
|
MapEsResponseToCruiseControlConfig(value map[string]interface{}) (cruise.ControlConfig, error)
|
|
}
|
|
|
|
func MapCruiseResponseToList(search *esapi.Response) ([]string, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var responseList []string
|
|
for _, value := range result.Hits.Hits {
|
|
valueLocal := value
|
|
responseList = append(responseList, valueLocal.Fields["os_config.app_version"][0].(string))
|
|
}
|
|
return responseList, nil
|
|
}
|
|
|
|
func MapCruiseResponseToString(search *esapi.Response) (string, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return utils.EMPTY, err
|
|
}
|
|
if result.Hits.Hits == nil {
|
|
return utils.EMPTY, errors.New("Mapping Failed")
|
|
}
|
|
value := result.Hits.Hits[0]
|
|
return value.Fields["os_config.app_version"][0].(string), nil
|
|
}
|
|
|
|
func MapEsResponseToCruiseControlConfig(value map[string]interface{}) (cruise.ControlConfig, error) {
|
|
var cruiseControlRequest cruise.ControlConfig
|
|
|
|
var cruiseMapper mapper.CruiseMapper
|
|
|
|
jsonData, err := json.Marshal(value)
|
|
if err != nil {
|
|
return cruiseControlRequest, err
|
|
}
|
|
err = json.Unmarshal(jsonData, &cruiseMapper)
|
|
if err != nil {
|
|
return cruiseControlRequest, err
|
|
}
|
|
jsonData, err = json.Marshal(cruiseMapper)
|
|
if err != nil {
|
|
return cruiseControlRequest, err
|
|
}
|
|
err = json.Unmarshal(jsonData, &cruiseControlRequest)
|
|
if err != nil {
|
|
return cruiseControlRequest, err
|
|
}
|
|
|
|
cruiseControlRequest.ConfigTime = utils.GetCurrentTimeInMillis()
|
|
return cruiseControlRequest, nil
|
|
}
|