From 50caeee5c2868b0861144b3ca459d74ae8f023a0 Mon Sep 17 00:00:00 2001 From: sawka Date: Tue, 28 Mar 2023 01:04:34 -0700 Subject: [PATCH] support int fields in DBMappable --- pkg/dbutil/dbutil.go | 28 +++++++++++++++++++++++++--- pkg/dbutil/map.go | 3 +++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/pkg/dbutil/dbutil.go b/pkg/dbutil/dbutil.go index 872a0911..e3dfbbf4 100644 --- a/pkg/dbutil/dbutil.go +++ b/pkg/dbutil/dbutil.go @@ -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) { diff --git a/pkg/dbutil/map.go b/pkg/dbutil/map.go index 59bde8f6..0614e368 100644 --- a/pkg/dbutil/map.go +++ b/pkg/dbutil/map.go @@ -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)