code tidy up
This commit is contained in:
parent
a74f8db232
commit
1f54b91076
75
session.go
75
session.go
|
@ -2005,6 +2005,20 @@ func (session *Session) value2Interface(col *Column, fieldValue reflect.Value) (
|
||||||
}
|
}
|
||||||
fieldType := fieldValue.Type()
|
fieldType := fieldValue.Type()
|
||||||
k := fieldType.Kind()
|
k := fieldType.Kind()
|
||||||
|
if k == reflect.Ptr {
|
||||||
|
if fieldValue.IsNil() {
|
||||||
|
return nil, nil
|
||||||
|
} else if !fieldValue.IsValid() {
|
||||||
|
session.Engine.LogWarn("the field[", col.FieldName, "] is invalid")
|
||||||
|
return nil, nil
|
||||||
|
} else {
|
||||||
|
// !nashtsai! deference pointer type to instance type
|
||||||
|
fieldValue = fieldValue.Elem()
|
||||||
|
fieldType = fieldValue.Type()
|
||||||
|
k = fieldType.Kind()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch k {
|
switch k {
|
||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
if fieldValue.Bool() {
|
if fieldValue.Bool() {
|
||||||
|
@ -2073,67 +2087,6 @@ func (session *Session) value2Interface(col *Column, fieldValue reflect.Value) (
|
||||||
} else {
|
} else {
|
||||||
return nil, ErrUnSupportedType
|
return nil, ErrUnSupportedType
|
||||||
}
|
}
|
||||||
case reflect.Ptr:
|
|
||||||
typeStr := fieldType.String()
|
|
||||||
if typeStr == "*string" {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
return fieldValue.Elem().String(), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*bool" {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
return fieldValue.Elem().Bool(), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*complex64" || typeStr == "*complex128" {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
bytes, err := json.Marshal(fieldValue.Elem().Complex())
|
|
||||||
if err != nil {
|
|
||||||
session.Engine.LogSQL(err)
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
return string(bytes), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*float32" || typeStr == "*float64" {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
return fieldValue.Elem().Float(), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*time.Time" {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
if col.SQLType.Name == Time {
|
|
||||||
//s := fieldValue.Interface().(time.Time).Format("2006-01-02 15:04:05 -0700")
|
|
||||||
s := fieldValue.Elem().Interface().(time.Time).Format(time.RFC3339)
|
|
||||||
return s[11:19], nil
|
|
||||||
} else if col.SQLType.Name == Date {
|
|
||||||
return fieldValue.Elem().Interface().(time.Time).Format("2006-01-02"), nil
|
|
||||||
} else if col.SQLType.Name == TimeStampz {
|
|
||||||
return fieldValue.Elem().Interface().(time.Time).Format(time.RFC3339Nano), nil
|
|
||||||
}
|
|
||||||
return fieldValue.Elem().Interface(), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*int64" || intTypes.Search(typeStr) < len(intTypes) {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
return fieldValue.Elem().Int(), nil
|
|
||||||
}
|
|
||||||
} else if typeStr == "*uint64" || uintTypes.Search(typeStr) < len(uintTypes) {
|
|
||||||
if fieldValue.IsNil() {
|
|
||||||
return nil, nil
|
|
||||||
} else {
|
|
||||||
return fieldValue.Elem().Uint(), nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fallthrough
|
|
||||||
default:
|
default:
|
||||||
return fieldValue.Interface(), nil
|
return fieldValue.Interface(), nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue