Files
alfred-be/alfred/mapper/cruiseControlMapper.go
2026-03-08 16:14:42 +05:30

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
}