Files
alfred-be/alfred/mapper/commonMapper.go

47 lines
1.3 KiB
Go
Raw Normal View History

2026-03-08 16:14:42 +05:30
package mapper
import (
"alfred/model/es"
"alfred/utils"
"encoding/json"
"errors"
"github.com/elastic/go-elasticsearch/v8/esapi"
"reflect"
"strconv"
)
func MapESApiResponseToESResponse(response *esapi.Response) (*es.ESResponse, error) {
defer response.Body.Close()
var esResponse es.ESResponse
err := json.NewDecoder(response.Body).Decode(&esResponse)
if err != nil {
return nil, err
}
return &esResponse, nil
}
func MapESResponseToGetUniqueValues(search *esapi.Response, key string) ([]string, error) {
result, err := MapESApiResponseToESResponse(search)
if err != nil {
return nil, err
}
if len(result.Aggregation.Buckets.Buckets) == 0 {
return nil, errors.New("empty response")
}
var values []string
for _, event := range result.Aggregation.Buckets.Buckets {
if reflect.TypeOf(event.Key) == reflect.TypeOf("i") && event.Key.(string) != utils.EMPTY {
values = append(values, event.Key.(string))
} else if reflect.TypeOf(event.Key) == reflect.TypeOf(int64(0)) {
str := strconv.FormatInt(event.Key.(int64), 10)
values = append(values, str)
} else if reflect.TypeOf(event.Key) == reflect.TypeOf(float64(0.0)) {
str := strconv.FormatFloat(event.Key.(float64), 'f', 0, 64)
values = append(values, str)
}
}
return values, nil
}