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

61 lines
1.4 KiB
Go
Raw Permalink Normal View History

2026-03-08 16:14:42 +05:30
package mapper
import (
"alfred/model/common"
"alfred/model/es"
"encoding/json"
"github.com/elastic/go-elasticsearch/v8/esapi"
)
func MapEsResponseAndGetSessionIds(search *esapi.Response) ([]string, error) {
result, err := MapESApiResponseToESResponse(search)
if err != nil {
return nil, err
}
var sessionIds []string
if len(result.Aggregation.Buckets.Buckets) == 0 {
return sessionIds, nil
}
for _, event := range result.Aggregation.Buckets.Buckets {
sessionIds = append(sessionIds, event.Key.(string))
}
return sessionIds, nil
}
func MapEsResponseToErrorEventsResponse(search *esapi.Response) ([]es.ErrorEventsResponse, error) {
result, err := MapESApiResponseToESResponse(search)
if err != nil {
return nil, err
}
if len(result.Hits.Hits) == 0 {
return []es.ErrorEventsResponse{}, nil
}
var errorEvents []es.ErrorEventsResponse
jsonHits, err := json.Marshal(result.Hits.Hits)
if err != nil {
return nil, err
}
if err = json.Unmarshal(jsonHits, &errorEvents); err != nil {
return nil, err
}
return errorEvents, nil
}
func MapEsResponseToTimeStamp(clientName string, search *esapi.Response) (int64, error) {
result, err := MapESApiResponseToESResponse(search)
if err != nil {
return 0, err
}
if len(result.Hits.Hits) == 0 {
return 0, &common.InvalidSessionError{}
}
timestamp, ok := result.Hits.Hits[0].Source[clientName].(float64)
if !ok {
return 0, &common.InvalidSessionError{}
}
return int64(timestamp), nil
}