fix type parameters for QueryData()
This commit is contained in:
parent
53f91b4875
commit
0bfd2a6ca1
2 changed files with 4 additions and 5 deletions
|
@ -13,7 +13,7 @@ type Cfg struct {
|
||||||
type Rows = sql.Rows
|
type Rows = sql.Rows
|
||||||
|
|
||||||
type rowsProc = func(*sql.Rows) error
|
type rowsProc = func(*sql.Rows) error
|
||||||
type Scanner interface{ Scan(*Rows) (Scanner, error) }
|
type Scanner[T any] interface{ Scan(*Rows) (T, error) }
|
||||||
|
|
||||||
type Storage struct {
|
type Storage struct {
|
||||||
*sql.DB
|
*sql.DB
|
||||||
|
@ -28,12 +28,11 @@ func Open(cfg *Cfg) *Storage {
|
||||||
return &Storage{db}
|
return &Storage{db}
|
||||||
}
|
}
|
||||||
|
|
||||||
func QueryData[T Scanner](db *Storage, q string, args ...interface{}) []T {
|
func QueryData[T Scanner[T]](db *Storage, q string, args ...interface{}) []T {
|
||||||
var data []T
|
var data []T
|
||||||
proc := func(r *sql.Rows) error {
|
proc := func(r *sql.Rows) error {
|
||||||
var rec T
|
var rec T
|
||||||
r1, err := rec.Scan(r)
|
rec, err := rec.Scan(r)
|
||||||
rec = r1.(T)
|
|
||||||
data = append(data, rec)
|
data = append(data, rec)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ type greet struct {
|
||||||
label string
|
label string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g greet) Scan(rows *sql.Rows) (sql.Scanner, error) {
|
func (g greet) Scan(rows *sql.Rows) (greet, error) {
|
||||||
err := rows.Scan(&g.id, &g.label)
|
err := rows.Scan(&g.id, &g.label)
|
||||||
return g, err
|
return g, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue