support int fields in DBMappable

This commit is contained in:
sawka 2023-03-28 01:04:34 -07:00
parent dde547351c
commit 50caeee5c2
2 changed files with 28 additions and 3 deletions

View File

@ -24,16 +24,38 @@ func QuickSetStr(strVal *string, m map[string]interface{}, name string) {
*strVal = str
}
func QuickSetInt(ival *int, m map[string]interface{}, name string) {
v, ok := m[name]
if !ok {
return
}
sqlInt, ok := v.(int)
if ok {
*ival = sqlInt
return
}
sqlInt64, ok := v.(int64)
if ok {
*ival = int(sqlInt64)
return
}
}
func QuickSetInt64(ival *int64, m map[string]interface{}, name string) {
v, ok := m[name]
if !ok {
return
}
sqlInt, ok := v.(int64)
if !ok {
sqlInt64, ok := v.(int64)
if ok {
*ival = sqlInt64
return
}
sqlInt, ok := v.(int)
if ok {
*ival = int64(sqlInt)
return
}
*ival = sqlInt
}
func QuickSetBool(bval *bool, m map[string]interface{}, name string) {

View File

@ -189,6 +189,9 @@ func FromDBMap(v DBMappable, m map[string]interface{}) {
} else if field.Type.Kind() == reflect.Int64 {
intVal := fieldVal.Addr().Interface()
QuickSetInt64(intVal.(*int64), m, dbName)
} else if field.Type.Kind() == reflect.Int {
intVal := fieldVal.Addr().Interface()
QuickSetInt(intVal.(*int), m, dbName)
} else if field.Type.Kind() == reflect.Bool {
boolVal := fieldVal.Addr().Interface()
QuickSetBool(boolVal.(*bool), m, dbName)