summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2025-06-13 23:21:32 +0200
committerThomas Voss <mail@thomasvoss.com> 2025-06-13 23:21:32 +0200
commitf9accf7d1ebc1c4b2a07818b0a96c8cd3a73666d (patch)
tree99a5dc2b3ed05f12655ecaa4dea0a080a1387a69 /src
parent32a1ed652e7f33b0744f66bf8fb3d68e7be63a84 (diff)
Fix double call to rs.Next()
Diffstat (limited to 'src')
-rw-r--r--src/dbx/db.go16
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