package service import ( "encoding/json" "fmt" "sort" "go-places-api/internal/domain" ) // marshalPayload encodes an event payload as JSON. func marshalPayload(payload map[string]any) (json.RawMessage, error) { body, err := json.Marshal(payload) if err != nil { return nil, fmt.Errorf("service: marshal event payload: %w", err) } return json.RawMessage(body), nil } // sortRelated orders related places by distance, then by identifier so the // result is stable for equal distances. func sortRelated(in []domain.RelatedPlace) { sort.SliceStable(in, func(i, j int) bool { if in[i].DistanceMeters != in[j].DistanceMeters { return in[i].DistanceMeters < in[j].DistanceMeters } return in[i].Place.ID < in[j].Place.ID }) }