feat: split type case

This commit is contained in:
huanjiawei 2022-07-25 21:32:05 +08:00
parent f29e9d2485
commit e71a683736
2 changed files with 5 additions and 7 deletions

View File

@ -119,14 +119,13 @@ func (UnixSecondSerializer) Scan(ctx context.Context, field *Field, dst reflect.
// Value implements serializer interface // Value implements serializer interface
func (UnixSecondSerializer) Value(ctx context.Context, field *Field, dst reflect.Value, fieldValue interface{}) (result interface{}, err error) { 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) { switch v := fieldValue.(type) {
case int64, int, uint, uint64, int32, uint32, int16, uint16, *int64, *int, *uint, *uint64, *int32, *uint32, *int16, *uint16: case int64, int, uint, uint64, int32, uint32, int16, uint16:
rv := reflect.ValueOf(v) result = time.Unix(reflect.Indirect(rv).Int(), 0)
if rv.Kind() == reflect.Ptr && rv.IsNil() { case *int64, *int, *uint, *uint64, *int32, *uint32, *int16, *uint16:
return nil, nil
}
if rv.IsZero() { if rv.IsZero() {
return time.Unix(0, 0), nil return nil, nil
} }
result = time.Unix(reflect.Indirect(rv).Int(), 0) result = time.Unix(reflect.Indirect(rv).Int(), 0)
default: default:

View File

@ -103,7 +103,6 @@ func TestSerializer(t *testing.T) {
CustomSerializerString: "world", CustomSerializerString: "world",
} }
data.JobInfo = Job{}
if err := DB.Create(&data).Error; err != nil { if err := DB.Create(&data).Error; err != nil {
t.Fatalf("failed to create data, got error %v", err) t.Fatalf("failed to create data, got error %v", err)
} }