package mdb import ( "context" "zombiezen.com/go/sqlite" "zombiezen.com/go/sqlite/sqlitex" ) // load scans all results of sql and appends them to r. func load[T any](ctx context.Context, db *sqlitex.Pool, r []T, sql string, row func(*sqlite.Stmt) T) ([]T, error) { conn, err := db.Take(ctx) defer db.Put(conn) if err != nil { return nil, err } stmt, err := conn.Prepare(sql) if err != nil { return nil, err } for { ok, err := stmt.Step() if err != nil { return r, err } if !ok { break } r = append(r, row(stmt)) } return r, err }