This commit is contained in:
+9
-11
@@ -4,7 +4,6 @@ import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"git.gdulai.com/gdulai/simpleorm"
|
||||
"git.gdulai.com/gdulai/simpleorm/schema"
|
||||
@@ -98,7 +97,13 @@ func (s Select[T]) Execute(conn *simpleorm.DBConnection) ([]T, error) {
|
||||
targetType := s.target.Type
|
||||
parsedResult := reflect.New(targetType)
|
||||
for i, fieldVal := range rowContainer {
|
||||
parsedResult.Elem().Field(i).Set(reflect.Indirect(reflect.ValueOf(fieldVal)))
|
||||
col := s.target.Columns[i]
|
||||
targetField := parsedResult.Elem().Field(i)
|
||||
|
||||
rawValue := reflect.Indirect(reflect.ValueOf(fieldVal))
|
||||
decoded := reflect.ValueOf(col.Decode(targetField.Type().Name(), rawValue))
|
||||
|
||||
targetField.Set(decoded)
|
||||
}
|
||||
parsedObj := reflect.Indirect(parsedResult).Interface().(T)
|
||||
results = append(results, parsedObj)
|
||||
@@ -267,7 +272,7 @@ func createSelectResultContainer(t schema.Table) []any {
|
||||
case "string":
|
||||
var fieldContainer string
|
||||
vals[i] = &fieldContainer
|
||||
case "int":
|
||||
case "int", "bool":
|
||||
var fieldContainer int
|
||||
vals[i] = &fieldContainer
|
||||
case "int64", "time.Time":
|
||||
@@ -290,15 +295,8 @@ func prepareParams(src any, t schema.Table) []any {
|
||||
continue
|
||||
}
|
||||
fieldValue := reflect.ValueOf(src).FieldByIndex(field.Index)
|
||||
typStr := field.Type.String()
|
||||
|
||||
switch typStr {
|
||||
case "time.Time":
|
||||
time := fieldValue.Interface().(time.Time)
|
||||
params = append(params, time.UnixMilli())
|
||||
default:
|
||||
params = append(params, fieldValue.Interface())
|
||||
}
|
||||
params = append(params, col.Encode(fieldValue))
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user