prepareValues prepare values slice
(values []interface{}, db *DB, columnTypes []*sql.ColumnType, columns []string)
| 13 | |
| 14 | // prepareValues prepare values slice |
| 15 | func prepareValues(values []interface{}, db *DB, columnTypes []*sql.ColumnType, columns []string) { |
| 16 | if db.Statement.Schema != nil { |
| 17 | for idx, name := range columns { |
| 18 | if field := db.Statement.Schema.LookUpField(name); field != nil { |
| 19 | values[idx] = reflect.New(reflect.PointerTo(field.FieldType)).Interface() |
| 20 | continue |
| 21 | } |
| 22 | values[idx] = new(interface{}) |
| 23 | } |
| 24 | } else if len(columnTypes) > 0 { |
| 25 | for idx, columnType := range columnTypes { |
| 26 | if columnType.ScanType() != nil { |
| 27 | values[idx] = reflect.New(reflect.PointerTo(columnType.ScanType())).Interface() |
| 28 | } else { |
| 29 | values[idx] = new(interface{}) |
| 30 | } |
| 31 | } |
| 32 | } else { |
| 33 | for idx := range columns { |
| 34 | values[idx] = new(interface{}) |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | func scanIntoMap(mapValue map[string]interface{}, values []interface{}, columns []string) { |
| 40 | for idx, column := range columns { |
no test coverage detected