sql.QueryDatat(): minor improvements, better tests
This commit is contained in:
parent
0bfd2a6ca1
commit
55c3444911
2 changed files with 10 additions and 9 deletions
|
@ -13,7 +13,7 @@ type Cfg struct {
|
|||
type Rows = sql.Rows
|
||||
|
||||
type rowsProc = func(*sql.Rows) error
|
||||
type Scanner[T any] interface{ Scan(*Rows) (T, error) }
|
||||
type scanner[T any] interface{ Scan(*Rows) (T, error) }
|
||||
|
||||
type Storage struct {
|
||||
*sql.DB
|
||||
|
@ -28,10 +28,10 @@ func Open(cfg *Cfg) *Storage {
|
|||
return &Storage{db}
|
||||
}
|
||||
|
||||
func QueryData[T Scanner[T]](db *Storage, q string, args ...interface{}) []T {
|
||||
func QueryData[T scanner[T]](db *Storage, q string, args ...interface{}) []T {
|
||||
var data []T
|
||||
var rec T
|
||||
proc := func(r *sql.Rows) error {
|
||||
var rec T
|
||||
rec, err := rec.Scan(r)
|
||||
data = append(data, rec)
|
||||
return err
|
||||
|
|
|
@ -41,12 +41,12 @@ func (g greet) Scan(rows *sql.Rows) (greet, error) {
|
|||
}
|
||||
|
||||
func BaseTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
|
||||
//fmt.Println(cfg.Connstr)
|
||||
db.Exec(insert)
|
||||
//data := sql.QueryCol[string](db, query, 2)
|
||||
data := sql.QueryData[greet](db, query, 2)
|
||||
t.AssertEqual(len(data), 1)
|
||||
t.AssertEqual(data[0].label, "Good Afternoon")
|
||||
data := sql.QueryData[greet](db, query)
|
||||
t.AssertEqual(len(data), 2)
|
||||
t.AssertEqual(data[0].label, "Hello World")
|
||||
t.AssertEqual(data[1].label, "Good Afternoon")
|
||||
}
|
||||
|
||||
func resetSqlite(db *sql.Storage) {
|
||||
|
@ -67,8 +67,9 @@ var insert = `insert into test (label) values
|
|||
('Hello World'),
|
||||
('Good Afternoon')`
|
||||
|
||||
var query = `select id, label from test
|
||||
where id = $1`
|
||||
var query = `select id, label from test `
|
||||
|
||||
//where id = $1`
|
||||
|
||||
// database-specific SQL statements
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue