Skip to content

Commit 77f109b

Browse files
committed
nil time.Time -> null element
1 parent 8f61db3 commit 77f109b

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

bson/encode.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ func NewDocumentEncoder() DocumentEncoder {
122122
return &encoder{}
123123
}
124124

125-
func convertTimeToInt64(t *time.Time) int64 {
126-
if t == nil { return 0 }
125+
func convertTimeToInt64(t time.Time) int64 {
127126
return t.Unix()*1000 + int64(t.Nanosecond()/1e6)
128127
}
129128

@@ -443,10 +442,14 @@ func (e *encoder) encodeSliceAsArray(rval reflect.Value, minsize bool) ([]*Value
443442
vals = append(vals, VC.Decimal128(t))
444443
continue
445444
case time.Time:
446-
vals = append(vals, VC.DateTime(convertTimeToInt64(&t)))
445+
vals = append(vals, VC.DateTime(convertTimeToInt64(t)))
447446
continue
448447
case *time.Time:
449-
vals = append(vals, VC.DateTime(convertTimeToInt64(t)))
448+
if t == nil {
449+
vals = append(vals, VC.Null())
450+
} else {
451+
vals = append(vals, VC.DateTime(convertTimeToInt64(*t)))
452+
}
450453
continue
451454
}
452455

@@ -529,10 +532,14 @@ func (e *encoder) encodeStruct(val reflect.Value) ([]*Element, error) {
529532
elems = append(elems, EC.Decimal128(key, t))
530533
continue
531534
case time.Time:
532-
elems = append(elems, EC.DateTime(key, convertTimeToInt64(&t)))
535+
elems = append(elems, EC.DateTime(key, convertTimeToInt64(t)))
533536
continue
534537
case *time.Time:
535-
elems = append(elems, EC.DateTime(key, convertTimeToInt64(t)))
538+
if t == nil {
539+
elems = append(elems, EC.Null(key))
540+
} else {
541+
elems = append(elems, EC.DateTime(key, convertTimeToInt64(*t)))
542+
}
536543
continue
537544
}
538545
field = e.underlyingVal(field)

0 commit comments

Comments
 (0)