| 37 | } |
| 38 | |
| 39 | func scanIntoMap(mapValue map[string]interface{}, values []interface{}, columns []string) { |
| 40 | for idx, column := range columns { |
| 41 | if reflectValue := reflect.Indirect(reflect.Indirect(reflect.ValueOf(values[idx]))); reflectValue.IsValid() { |
| 42 | mapValue[column] = reflectValue.Interface() |
| 43 | if valuer, ok := mapValue[column].(driver.Valuer); ok { |
| 44 | mapValue[column], _ = valuer.Value() |
| 45 | } else if b, ok := mapValue[column].(sql.RawBytes); ok { |
| 46 | mapValue[column] = string(b) |
| 47 | } |
| 48 | } else { |
| 49 | mapValue[column] = nil |
| 50 | } |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | func (db *DB) scanIntoStruct(rows Rows, reflectValue reflect.Value, values []interface{}, fields []*schema.Field, joinFields [][]*schema.Field) { |
| 55 | for idx, field := range fields { |