diff options
author | Thomas Voss <mail@thomasvoss.com> | 2025-06-13 23:21:32 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2025-06-13 23:21:32 +0200 |
commit | f9accf7d1ebc1c4b2a07818b0a96c8cd3a73666d (patch) | |
tree | 99a5dc2b3ed05f12655ecaa4dea0a080a1387a69 /src | |
parent | 32a1ed652e7f33b0744f66bf8fb3d68e7be63a84 (diff) |
Fix double call to rs.Next()
Diffstat (limited to 'src')
-rw-r--r-- | src/dbx/db.go | 16 |
1 files changed, 11 insertions, 5 deletions
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 |