From a9b1e3641004331c3e45592d00f2b5f16b9d6a25 Mon Sep 17 00:00:00 2001 From: Amogh-Bharadwaj Date: Thu, 16 May 2024 18:44:02 +0530 Subject: [PATCH] fix interval --- flow/connectors/postgres/qvalue_convert.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/flow/connectors/postgres/qvalue_convert.go b/flow/connectors/postgres/qvalue_convert.go index 6e32cd8ea5..9f5cc7ccff 100644 --- a/flow/connectors/postgres/qvalue_convert.go +++ b/flow/connectors/postgres/qvalue_convert.go @@ -15,6 +15,7 @@ import ( "github.com/lib/pq/oid" "github.com/shopspring/decimal" + datatypes "github.com/PeerDB-io/peer-flow/datatypes" "github.com/PeerDB-io/peer-flow/model/qvalue" "github.com/PeerDB-io/peer-flow/shared" ) @@ -262,11 +263,23 @@ func parseFieldFromQValueKind(qvalueKind qvalue.QValueKind, value interface{}) ( } case qvalue.QValueKindInterval: intervalObject := value.(pgtype.Interval) + var interval datatypes.PeerDBInterval + interval.Hours = int(intervalObject.Microseconds / 3600000000) + interval.Minutes = int((intervalObject.Microseconds % 3600000000) / 60000000) + interval.Seconds = float64(intervalObject.Microseconds%60000000) / 1000000.0 + interval.Days = int(intervalObject.Days) + interval.Years = int(intervalObject.Months / 12) + interval.Months = int(intervalObject.Months % 12) + interval.Valid = intervalObject.Valid + // Construct the interval string manually var intervalString string - intervalString += strconv.Itoa(int(intervalObject.Months)) + " months " - intervalString += strconv.Itoa(int(intervalObject.Days)) + " days " - intervalString += strconv.Itoa(int(intervalObject.Microseconds)) + " microseconds" + intervalString += strconv.Itoa(int(interval.Years)) + " years " + intervalString += strconv.Itoa(int(interval.Months)) + " months " + intervalString += strconv.Itoa(int(interval.Days)) + " days " + intervalString += strconv.Itoa(int(interval.Hours)) + " hours " + intervalString += strconv.Itoa(int(interval.Minutes)) + " minutes " + intervalString += strconv.Itoa(int(interval.Seconds)) + " seconds " intervalString = strings.Trim(intervalString, " ") return qvalue.QValueString{Val: intervalString}, nil case qvalue.QValueKindDate: