diff --git a/server/compose/automation/expr_types.go b/server/compose/automation/expr_types.go index 6c1f2e843..15c6a5429 100644 --- a/server/compose/automation/expr_types.go +++ b/server/compose/automation/expr_types.go @@ -293,6 +293,11 @@ func composeRecordValuesGValSelector(res *types.Record, k string) (interface{}, return false, nil } + // return nil time.Time for date and time fields + if field != nil && (field.IsDateOnly() || field.IsDateTime() || field.IsTimeOnly()) { + return expr.NewDateTime(nil) + } + return nil, nil case len(vv) == 1 && !multiValueField: diff --git a/server/compose/types/record_value.go b/server/compose/types/record_value.go index 99eafb5ec..9e9c338a7 100644 --- a/server/compose/types/record_value.go +++ b/server/compose/types/record_value.go @@ -79,6 +79,20 @@ func (v RecordValue) Cast(f *ModuleField) (interface{}, error) { } return cast.ToTimeE(v.Value) + case f.IsDateOnly(): + if v.Value == "" { + return nil, nil + } + + return time.Parse(DateOnlyLayout, v.Value) + + case f.IsTimeOnly(): + if v.Value == "" { + return nil, nil + } + + return time.Parse(TimeOnlyLayout, v.Value) + case f.IsBoolean(): return expr.CastToBoolean(v.Value)