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

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
}