50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package mapper
|
|
|
|
import (
|
|
"alfred/model/common"
|
|
"alfred/model/es"
|
|
"alfred/pkg/log"
|
|
"encoding/json"
|
|
"github.com/elastic/go-elasticsearch/v8/esapi"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func MapEsResponseToEventResponse(search *esapi.Response) ([]es.EventResponse, *int64, error) {
|
|
result, err := MapESApiResponseToESResponse(search)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
if len(result.Hits.Hits) == 0 {
|
|
return nil, nil, &common.InvalidSessionError{}
|
|
}
|
|
|
|
var eventResponse []es.EventResponse
|
|
jsonHits, err := json.Marshal(result.Hits.Hits)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
if err = json.Unmarshal(jsonHits, &eventResponse); err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
return eventResponse, &result.Aggregation.Filter.DocCount, nil
|
|
}
|
|
|
|
func MapEsResponseToZipResponse(search *esapi.Response) ([]string, error) {
|
|
defer search.Body.Close()
|
|
var esResponse es.EventResponseForZips
|
|
err := json.NewDecoder(search.Body).Decode(&esResponse)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var zips []string
|
|
|
|
for _, key := range esResponse.Aggregations.UniqueZipNames.Buckets {
|
|
zips = append(zips, key.Key)
|
|
log.Info("Zip List:", zap.String("ZipNAme", key.Key))
|
|
}
|
|
|
|
return zips, nil
|
|
}
|