From f9accf7d1ebc1c4b2a07818b0a96c8cd3a73666d Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Fri, 13 Jun 2025 23:21:32 +0200 Subject: Fix double call to rs.Next() --- src/dbx/db.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/dbx/db.go b/src/dbx/db.go index 3a6f24a..9be23f0 100644 --- a/src/dbx/db.go +++ b/src/dbx/db.go @@ -154,10 +154,14 @@ func applyMigrations(dir string) error { return nil } +func scanToStruct[T any](rs *sql.Rows) (T, error) { + return scanToStruct2[T](rs, true) +} + func scanToStructs[T any](rs *sql.Rows) ([]T, error) { xs := []T{} for rs.Next() { - x, err := scanToStruct[T](rs) + x, err := scanToStruct2[T](rs, false) if err != nil { return nil, err } @@ -166,7 +170,7 @@ func scanToStructs[T any](rs *sql.Rows) ([]T, error) { return xs, rs.Err() } -func scanToStruct[T any](rs *sql.Rows) (T, error) { +func scanToStruct2[T any](rs *sql.Rows, callNextP bool) (T, error) { var t, zero T cols, err := rs.Columns() @@ -183,9 +187,11 @@ func scanToStruct[T any](rs *sql.Rows) (T, error) { rawValues[i] = &zero } - rs.Next() - if err := rs.Err(); err != nil { - return zero, err + if callNextP { + rs.Next() + if err := rs.Err(); err != nil { + return zero, err + } } if err := rs.Scan(rawValues...); err != nil { return zero, err -- cgit v1.2.3