structscan maps SQL rows to Go structs.
go get -u github.com/go-sqlt/structscan
package main
import (
"database/sql"
"fmt"
"github.com/go-sqlt/structscan"
_ "modernc.org/sqlite"
)
type Dest struct {
Total int64
Bool bool
}
func main() {
schema := structscan.New[Dest](
structscan.Scan[Dest]().String().Enum(
structscan.Enum{String: "2", Int: 2},
).MustTo("Total"),
structscan.Scan[Dest]().String().TrimSpace().ParseBool().MustTo("Bool"),
)
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
panic(err)
}
rows, err := db.Query(`SELECT '2', ' true '`)
if err != nil {
panic(err)
}
defer rows.Close()
data, err := schema.One(rows)
if err != nil {
panic(err)
}
fmt.Println(data) // {2 true}
}