From 8ff5f02916be9178f153072ecce7ca7a5c105929 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Sat, 16 Apr 2022 21:45:39 -0500 Subject: [PATCH] wtf it works --- src/db/db.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/db/db.go b/src/db/db.go index c4f83d5..f89a7b7 100644 --- a/src/db/db.go +++ b/src/db/db.go @@ -414,7 +414,7 @@ func (it *Iterator[T]) Next() (*T, bool) { if len(vals) != 1 { panic(fmt.Errorf("tried to query a scalar value, but got %v values in the row", len(vals))) } - result.Set(reflect.ValueOf(vals[0])) + setValueFromDB(result.Elem(), reflect.ValueOf(vals[0])) return result.Interface().(*T), true } else { var currentField reflect.StructField @@ -463,12 +463,7 @@ func (it *Iterator[T]) Next() (*T, bool) { } currentValue = valReflected - switch field.Kind() { - case reflect.Int: - field.SetInt(valReflected.Int()) - default: - field.Set(valReflected) - } + setValueFromDB(field, valReflected) currentField = reflect.StructField{} currentValue = reflect.Value{} @@ -478,6 +473,15 @@ func (it *Iterator[T]) Next() (*T, bool) { } } +func setValueFromDB(dest reflect.Value, value reflect.Value) { + switch dest.Kind() { + case reflect.Int: + dest.SetInt(value.Int()) + default: + dest.Set(value) + } +} + func (it *Iterator[any]) Close() { it.rows.Close() select {