db.go (352B)
1 package backend 2 3 import "database/sql" 4 5 type Scanner interface { 6 Scan(dest ...any) error 7 } 8 9 func collectRows[T any](rows *sql.Rows, collector func(Scanner) (T, error)) ([]T, error) { 10 var things []T 11 12 for rows.Next() { 13 thing, err := collector(rows) 14 if err != nil { 15 return nil, err 16 } 17 things = append(things, thing) 18 } 19 20 return things, nil 21 }