add private scanner for scan
This commit is contained in:
parent
f91313436a
commit
4981881dc7
15
scan.go
15
scan.go
@ -98,6 +98,10 @@ func (db *DB) scanIntoStruct(rows Rows, reflectValue reflect.Value, values []int
|
|||||||
// ScanMode scan data mode
|
// ScanMode scan data mode
|
||||||
type ScanMode uint8
|
type ScanMode uint8
|
||||||
|
|
||||||
|
type Scanner interface {
|
||||||
|
Scan(values []interface{}, columns []string)
|
||||||
|
}
|
||||||
|
|
||||||
// scan modes
|
// scan modes
|
||||||
const (
|
const (
|
||||||
ScanInitialized ScanMode = 1 << 0 // 1
|
ScanInitialized ScanMode = 1 << 0 // 1
|
||||||
@ -118,6 +122,17 @@ func Scan(rows Rows, db *DB, mode ScanMode) {
|
|||||||
db.RowsAffected = 0
|
db.RowsAffected = 0
|
||||||
|
|
||||||
switch dest := db.Statement.Dest.(type) {
|
switch dest := db.Statement.Dest.(type) {
|
||||||
|
case Scanner:
|
||||||
|
columnTypes, _ := rows.ColumnTypes()
|
||||||
|
for initialized || rows.Next() {
|
||||||
|
prepareValues(values, db, columnTypes, columns)
|
||||||
|
|
||||||
|
initialized = false
|
||||||
|
db.RowsAffected++
|
||||||
|
db.AddError(rows.Scan(values...))
|
||||||
|
|
||||||
|
dest.Scan(values,columns)
|
||||||
|
}
|
||||||
case map[string]interface{}, *map[string]interface{}:
|
case map[string]interface{}, *map[string]interface{}:
|
||||||
if initialized || rows.Next() {
|
if initialized || rows.Next() {
|
||||||
columnTypes, _ := rows.ColumnTypes()
|
columnTypes, _ := rows.ColumnTypes()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user