From dd49c5f9a093ce6cc12103e73ee5d108a222a130 Mon Sep 17 00:00:00 2001 From: Frederick Holland Date: Fri, 19 Jun 2026 12:46:19 +1000 Subject: [PATCH] Added safety unmarshals for NaN float values in processed records --- models/processed.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/models/processed.go b/models/processed.go index 6ae737d..971d23c 100644 --- a/models/processed.go +++ b/models/processed.go @@ -1,9 +1,25 @@ package models import ( + "encoding/json" + "math" "time" ) +func (c DBClientProcessed) MarshalJSON() ([]byte, error) { + type alias DBClientProcessed // avoid recursion + sanitize := func(f float64) float64 { + if math.IsNaN(f) || math.IsInf(f, 0) { + return 0 + } + return f + } + a := alias(c) + a.ClientRate = sanitize(a.ClientRate) + a.PartnerRate = sanitize(a.PartnerRate) + return json.Marshal(a) +} + type DBClientProcessed struct { // CALL DETAILS @@ -69,6 +85,19 @@ func (DBClientProcessed) TableName() string { return "gc_client_processed" } +func (i DBInterpreterProcessed) MarshalJSON() ([]byte, error) { + type alias DBInterpreterProcessed // avoid recursion + sanitize := func(f float64) float64 { + if math.IsNaN(f) || math.IsInf(f, 0) { + return 0 + } + return f + } + a := alias(i) + a.InterpreterRate = sanitize(a.InterpreterRate) + return json.Marshal(a) +} + type DBInterpreterProcessed struct { // CALL DETAILS