From e71a683736367015628d90e74f98b17b123de7db Mon Sep 17 00:00:00 2001 From: huanjiawei Date: Mon, 25 Jul 2022 21:32:05 +0800 Subject: [PATCH] feat: split type case --- schema/serializer.go | 11 +++++------ tests/serializer_test.go | 1 - 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/schema/serializer.go b/schema/serializer.go index 0a237794..00a4f85f 100644 --- a/schema/serializer.go +++ b/schema/serializer.go @@ -119,14 +119,13 @@ func (UnixSecondSerializer) Scan(ctx context.Context, field *Field, dst reflect. // Value implements serializer interface func (UnixSecondSerializer) Value(ctx context.Context, field *Field, dst reflect.Value, fieldValue interface{}) (result interface{}, err error) { + rv := reflect.ValueOf(fieldValue) switch v := fieldValue.(type) { - case int64, int, uint, uint64, int32, uint32, int16, uint16, *int64, *int, *uint, *uint64, *int32, *uint32, *int16, *uint16: - rv := reflect.ValueOf(v) - if rv.Kind() == reflect.Ptr && rv.IsNil() { - return nil, nil - } + case int64, int, uint, uint64, int32, uint32, int16, uint16: + result = time.Unix(reflect.Indirect(rv).Int(), 0) + case *int64, *int, *uint, *uint64, *int32, *uint32, *int16, *uint16: if rv.IsZero() { - return time.Unix(0, 0), nil + return nil, nil } result = time.Unix(reflect.Indirect(rv).Int(), 0) default: diff --git a/tests/serializer_test.go b/tests/serializer_test.go index b345cc46..946536bf 100644 --- a/tests/serializer_test.go +++ b/tests/serializer_test.go @@ -103,7 +103,6 @@ func TestSerializer(t *testing.T) { CustomSerializerString: "world", } - data.JobInfo = Job{} if err := DB.Create(&data).Error; err != nil { t.Fatalf("failed to create data, got error %v", err) }