Bool support and type related insert/select tests
Go Tests / test (push) Failing after 6s

This commit is contained in:
2026-05-12 08:59:37 +02:00
parent ffd9cd004e
commit 1642a01aad
5 changed files with 176 additions and 14 deletions
+9 -11
View File
@@ -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
}