Documentation
¶
Overview ¶
Package structscan is a lightweight Go library that maps SQL query results to Go structs.
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}
}
Index ¶
- Variables
- type BinaryScanner
- type BoolScanner
- type BytesScanner
- type DefaultScanner
- func (s DefaultScanner) Binary() BinaryScanner[[]byte]
- func (s DefaultScanner) Bool() BoolScanner[bool]
- func (s DefaultScanner) Bytes() BytesScanner[[]byte]
- func (s DefaultScanner) Float() FloatScanner[float64]
- func (s DefaultScanner) Int() IntScanner[int64]
- func (s DefaultScanner) IntSlice() IntSliceScanner[[]int64]
- func (s DefaultScanner) JSON() JSONScanner[[]byte]
- func (s DefaultScanner) MustTo(path string) Scanner
- func (s DefaultScanner) Nullable() DefaultScanner
- func (s DefaultScanner) Scan() (any, func(dst reflect.Value) error)
- func (s DefaultScanner) String() StringScanner[string]
- func (s DefaultScanner) StringSlice() StringSliceScanner[[]string]
- func (s DefaultScanner) Text() TextScanner[[]byte]
- func (s DefaultScanner) Time() TimeScanner[time.Time]
- func (s DefaultScanner) To(path string) (Scanner, error)
- func (s DefaultScanner) Uint() UintScanner[uint64]
- type Enum
- type FloatScanner
- type IntScanner
- type IntSliceScanner
- func (s IntSliceScanner[S]) Asc() IntSliceScanner[S]
- func (s IntSliceScanner[S]) Desc() IntSliceScanner[S]
- func (s IntSliceScanner[S]) Format(base int) StringSliceScanner[S]
- func (s IntSliceScanner[S]) MustTo(path string) Scanner
- func (s IntSliceScanner[S]) Scan() (any, func(dst reflect.Value) error)
- func (s IntSliceScanner[S]) To(path string) (Scanner, error)
- type JSONScanner
- type Rows
- type Runner
- type ScanFunc
- type Scanner
- type Schema
- type StringScanner
- func (s StringScanner[S]) Enum(enums ...Enum) IntScanner[S]
- func (s StringScanner[S]) MustTo(path string) Scanner
- func (s StringScanner[S]) ParseBool() BoolScanner[S]
- func (s StringScanner[S]) ParseFloat(bitSize int) FloatScanner[S]
- func (s StringScanner[S]) ParseInt(base int, bitSize int) IntScanner[S]
- func (s StringScanner[S]) ParseTime(layout string) TimeScanner[S]
- func (s StringScanner[S]) ParseTimeInLocation(layout string, loc *time.Location) TimeScanner[S]
- func (s StringScanner[S]) ParseUint(base int, bitSize int) UintScanner[S]
- func (s StringScanner[S]) Scan() (any, func(dst reflect.Value) error)
- func (s StringScanner[S]) Split(sep string) StringSliceScanner[S]
- func (s StringScanner[S]) To(path string) (Scanner, error)
- func (s StringScanner[S]) Trim(cutset string) StringScanner[S]
- func (s StringScanner[S]) TrimPrefix(prefix string) StringScanner[S]
- func (s StringScanner[S]) TrimSpace() StringScanner[S]
- func (s StringScanner[S]) TrimSuffix(suffix string) StringScanner[S]
- type StringSliceScanner
- func (s StringSliceScanner[S]) Asc() StringSliceScanner[S]
- func (s StringSliceScanner[S]) Desc() StringSliceScanner[S]
- func (s StringSliceScanner[S]) MustTo(path string) Scanner
- func (s StringSliceScanner[S]) ParseInt(base int, bitSize int) IntSliceScanner[S]
- func (s StringSliceScanner[S]) Scan() (any, func(dst reflect.Value) error)
- func (s StringSliceScanner[S]) To(path string) (Scanner, error)
- type TextScanner
- type TimeScanner
- type UintScanner
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrTooManyRows = errors.New("too many rows")
Functions ¶
This section is empty.
Types ¶
type BinaryScanner ¶ added in v0.0.12
type BinaryScanner[S any] struct { // contains filtered or unexported fields }
func (BinaryScanner[S]) MustTo ¶ added in v0.0.14
func (s BinaryScanner[S]) MustTo(path string) Scanner
type BoolScanner ¶ added in v0.0.12
type BoolScanner[S any] struct { // contains filtered or unexported fields }
func (BoolScanner[S]) Format ¶ added in v0.0.12
func (s BoolScanner[S]) Format() StringScanner[S]
func (BoolScanner[S]) MustTo ¶ added in v0.0.14
func (s BoolScanner[S]) MustTo(path string) Scanner
type BytesScanner ¶ added in v0.0.12
type BytesScanner[S any] struct { // contains filtered or unexported fields }
func (BytesScanner[S]) MustTo ¶ added in v0.0.14
func (s BytesScanner[S]) MustTo(path string) Scanner
type DefaultScanner ¶ added in v0.0.16
type DefaultScanner struct {
// contains filtered or unexported fields
}
func Scan ¶ added in v0.0.5
func Scan[T any]() DefaultScanner
func (DefaultScanner) Binary ¶ added in v0.0.16
func (s DefaultScanner) Binary() BinaryScanner[[]byte]
func (DefaultScanner) Bool ¶ added in v0.0.16
func (s DefaultScanner) Bool() BoolScanner[bool]
func (DefaultScanner) Bytes ¶ added in v0.0.16
func (s DefaultScanner) Bytes() BytesScanner[[]byte]
func (DefaultScanner) Float ¶ added in v0.0.16
func (s DefaultScanner) Float() FloatScanner[float64]
func (DefaultScanner) Int ¶ added in v0.0.16
func (s DefaultScanner) Int() IntScanner[int64]
func (DefaultScanner) IntSlice ¶ added in v0.0.16
func (s DefaultScanner) IntSlice() IntSliceScanner[[]int64]
func (DefaultScanner) JSON ¶ added in v0.0.16
func (s DefaultScanner) JSON() JSONScanner[[]byte]
func (DefaultScanner) MustTo ¶ added in v0.0.18
func (s DefaultScanner) MustTo(path string) Scanner
func (DefaultScanner) Nullable ¶ added in v0.0.16
func (s DefaultScanner) Nullable() DefaultScanner
func (DefaultScanner) Scan ¶ added in v0.0.16
func (s DefaultScanner) Scan() (any, func(dst reflect.Value) error)
func (DefaultScanner) String ¶ added in v0.0.16
func (s DefaultScanner) String() StringScanner[string]
func (DefaultScanner) StringSlice ¶ added in v0.0.16
func (s DefaultScanner) StringSlice() StringSliceScanner[[]string]
func (DefaultScanner) Text ¶ added in v0.0.16
func (s DefaultScanner) Text() TextScanner[[]byte]
func (DefaultScanner) Time ¶ added in v0.0.16
func (s DefaultScanner) Time() TimeScanner[time.Time]
func (DefaultScanner) To ¶ added in v0.0.16
func (s DefaultScanner) To(path string) (Scanner, error)
func (DefaultScanner) Uint ¶ added in v0.0.16
func (s DefaultScanner) Uint() UintScanner[uint64]
type FloatScanner ¶ added in v0.0.12
type FloatScanner[S any] struct { // contains filtered or unexported fields }
func (FloatScanner[S]) Format ¶ added in v0.0.12
func (s FloatScanner[S]) Format(fmt byte, prec int, bitSize int) StringScanner[S]
func (FloatScanner[S]) MustTo ¶ added in v0.0.14
func (s FloatScanner[S]) MustTo(path string) Scanner
type IntScanner ¶ added in v0.0.12
type IntScanner[S any] struct { // contains filtered or unexported fields }
func (IntScanner[S]) Enum ¶ added in v0.0.12
func (s IntScanner[S]) Enum(enums ...Enum) StringScanner[S]
func (IntScanner[S]) Format ¶ added in v0.0.12
func (s IntScanner[S]) Format(base int) StringScanner[S]
func (IntScanner[S]) MustTo ¶ added in v0.0.14
func (s IntScanner[S]) MustTo(path string) Scanner
type IntSliceScanner ¶ added in v0.0.16
type IntSliceScanner[S any] struct { // contains filtered or unexported fields }
func (IntSliceScanner[S]) Asc ¶ added in v0.0.16
func (s IntSliceScanner[S]) Asc() IntSliceScanner[S]
func (IntSliceScanner[S]) Desc ¶ added in v0.0.16
func (s IntSliceScanner[S]) Desc() IntSliceScanner[S]
func (IntSliceScanner[S]) Format ¶ added in v0.0.16
func (s IntSliceScanner[S]) Format(base int) StringSliceScanner[S]
func (IntSliceScanner[S]) MustTo ¶ added in v0.0.18
func (s IntSliceScanner[S]) MustTo(path string) Scanner
type JSONScanner ¶ added in v0.0.12
type JSONScanner[S any] struct { // contains filtered or unexported fields }
func (JSONScanner[S]) MustTo ¶ added in v0.0.14
func (s JSONScanner[S]) MustTo(path string) Scanner
type Schema ¶ added in v0.0.3
type Schema[T any] struct { // contains filtered or unexported fields }
type StringScanner ¶ added in v0.0.12
type StringScanner[S any] struct { // contains filtered or unexported fields }
func (StringScanner[S]) Enum ¶ added in v0.0.12
func (s StringScanner[S]) Enum(enums ...Enum) IntScanner[S]
func (StringScanner[S]) MustTo ¶ added in v0.0.14
func (s StringScanner[S]) MustTo(path string) Scanner
func (StringScanner[S]) ParseBool ¶ added in v0.0.16
func (s StringScanner[S]) ParseBool() BoolScanner[S]
func (StringScanner[S]) ParseFloat ¶ added in v0.0.16
func (s StringScanner[S]) ParseFloat(bitSize int) FloatScanner[S]
func (StringScanner[S]) ParseInt ¶ added in v0.0.16
func (s StringScanner[S]) ParseInt(base int, bitSize int) IntScanner[S]
func (StringScanner[S]) ParseTime ¶ added in v0.0.16
func (s StringScanner[S]) ParseTime(layout string) TimeScanner[S]
func (StringScanner[S]) ParseTimeInLocation ¶ added in v0.0.16
func (s StringScanner[S]) ParseTimeInLocation(layout string, loc *time.Location) TimeScanner[S]
func (StringScanner[S]) ParseUint ¶ added in v0.0.16
func (s StringScanner[S]) ParseUint(base int, bitSize int) UintScanner[S]
func (StringScanner[S]) Scan ¶ added in v0.0.12
func (s StringScanner[S]) Scan() (any, func(dst reflect.Value) error)
func (StringScanner[S]) Split ¶ added in v0.0.12
func (s StringScanner[S]) Split(sep string) StringSliceScanner[S]
func (StringScanner[S]) To ¶ added in v0.0.14
func (s StringScanner[S]) To(path string) (Scanner, error)
func (StringScanner[S]) Trim ¶ added in v0.0.12
func (s StringScanner[S]) Trim(cutset string) StringScanner[S]
func (StringScanner[S]) TrimPrefix ¶ added in v0.0.16
func (s StringScanner[S]) TrimPrefix(prefix string) StringScanner[S]
func (StringScanner[S]) TrimSpace ¶ added in v0.0.12
func (s StringScanner[S]) TrimSpace() StringScanner[S]
func (StringScanner[S]) TrimSuffix ¶ added in v0.0.16
func (s StringScanner[S]) TrimSuffix(suffix string) StringScanner[S]
type StringSliceScanner ¶ added in v0.0.12
type StringSliceScanner[S any] struct { // contains filtered or unexported fields }
func (StringSliceScanner[S]) Asc ¶ added in v0.0.13
func (s StringSliceScanner[S]) Asc() StringSliceScanner[S]
func (StringSliceScanner[S]) Desc ¶ added in v0.0.13
func (s StringSliceScanner[S]) Desc() StringSliceScanner[S]
func (StringSliceScanner[S]) MustTo ¶ added in v0.0.14
func (s StringSliceScanner[S]) MustTo(path string) Scanner
func (StringSliceScanner[S]) ParseInt ¶ added in v0.0.16
func (s StringSliceScanner[S]) ParseInt(base int, bitSize int) IntSliceScanner[S]
type TextScanner ¶ added in v0.0.12
type TextScanner[S any] struct { // contains filtered or unexported fields }
func (TextScanner[S]) MustTo ¶ added in v0.0.14
func (s TextScanner[S]) MustTo(path string) Scanner
type TimeScanner ¶ added in v0.0.12
type TimeScanner[S any] struct { // contains filtered or unexported fields }
func (TimeScanner[S]) Format ¶ added in v0.0.12
func (s TimeScanner[S]) Format(layout string) StringScanner[S]
func (TimeScanner[S]) MustTo ¶ added in v0.0.14
func (s TimeScanner[S]) MustTo(path string) Scanner
type UintScanner ¶ added in v0.0.12
type UintScanner[S any] struct { // contains filtered or unexported fields }
func (UintScanner[S]) Format ¶ added in v0.0.12
func (s UintScanner[S]) Format(base int) StringScanner[S]
func (UintScanner[S]) MustTo ¶ added in v0.0.14
func (s UintScanner[S]) MustTo(path string) Scanner
Click to show internal directories.
Click to hide internal directories.