Skip to content

Commit 590fe48

Browse files
authored
utils: add DecodeDateReflection function (#168)
1 parent ebdf160 commit 590fe48

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

utils/decode.go

+27
Original file line numberDiff line numberDiff line change
@@ -1122,6 +1122,33 @@ func DecodeDate(value any, options ...DecodeTimeOption) (time.Time, error) {
11221122
return *result, nil
11231123
}
11241124

1125+
// DecodeDateReflection decodes a date value from reflection.
1126+
func DecodeDateReflection(value reflect.Value, options ...DecodeTimeOption) (time.Time, error) {
1127+
result, err := DecodeNullableDateReflection(value, options...)
1128+
if err != nil {
1129+
return time.Time{}, err
1130+
}
1131+
if result == nil {
1132+
return time.Time{}, errDateTimeRequired
1133+
}
1134+
return *result, nil
1135+
}
1136+
1137+
// DecodeNullableDateReflection decodes a nullable date value from reflection.
1138+
func DecodeNullableDateReflection(value reflect.Value, options ...DecodeTimeOption) (*time.Time, error) {
1139+
inferredValue, ok := UnwrapPointerFromReflectValue(value)
1140+
if !ok {
1141+
return nil, nil
1142+
}
1143+
1144+
result, err := decodeDateTimeReflection(inferredValue, createDecodeTimeOptions(parseDate, options...))
1145+
if err != nil {
1146+
return nil, err
1147+
}
1148+
1149+
return &result, nil
1150+
}
1151+
11251152
// DecodeNullableDuration tries to convert an unknown value to a duration pointer.
11261153
func DecodeNullableDuration(value any, options ...DecodeTimeOption) (*time.Duration, error) {
11271154
if value == nil {

0 commit comments

Comments
 (0)