Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

Commit 4369ada

Browse files
committed
Handling datetime
1 parent ebc9bdc commit 4369ada

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

platform/ingest/hydrolixlowerer.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"strconv"
1515
"strings"
1616
"sync/atomic"
17+
"time"
1718
)
1819

1920
type HydrolixLowerer struct {
@@ -213,6 +214,18 @@ func defaultForType(t string) interface{} {
213214
}
214215
}
215216

217+
func parseFlexibleTime(input string) (time.Time, error) {
218+
// First try RFC3339 (with timezone)
219+
t, err := time.Parse(time.RFC3339, input)
220+
if err == nil {
221+
return t, nil
222+
}
223+
224+
// Fallback: try without timezone and assume UTC
225+
layout := "2006-01-02T15:04:05"
226+
return time.ParseInLocation(layout, input, time.UTC)
227+
}
228+
216229
func CastToType(value any, typeName string) (any, error) {
217230
switch typeName {
218231
case "string":
@@ -261,6 +274,17 @@ func CastToType(value any, typeName string) (any, error) {
261274
case string:
262275
return strconv.Atoi(v)
263276
}
277+
case "datetime":
278+
if v, ok := value.(string); ok {
279+
280+
parsedTime, err := parseFlexibleTime(v)
281+
if err != nil {
282+
fmt.Println("Error parsing time:", err)
283+
return nil, err
284+
}
285+
return parsedTime.Format("2006-01-02 15:04:05 MST"), nil
286+
287+
}
264288
default:
265289
return nil, fmt.Errorf("unsupported target type: %s", typeName)
266290
}
@@ -416,12 +440,9 @@ func (l *HydrolixLowerer) LowerToDDL(
416440
if _, exists := events[colName]; !exists {
417441
value = defaultForType(typeInfo.Elements[0].Name)
418442
} else {
419-
if typeInfo.Elements[0].Name == "datetime" {
420-
value = defaultForType(typeInfo.Elements[0].Name)
421-
} else {
422-
val, _ := CastToType(events[colName], typeInfo.Elements[0].Name)
423-
value = val //defaultForType(typeInfo.Elements[0].Name)
424-
}
443+
val, _ := CastToType(events[colName], typeInfo.Elements[0].Name)
444+
value = val
445+
425446
}
426447

427448
case ArrayType:

0 commit comments

Comments
 (0)