diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/model.go')
-rw-r--r-- | vendor/github.com/uptrace/bun/model.go | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/vendor/github.com/uptrace/bun/model.go b/vendor/github.com/uptrace/bun/model.go index 88ec48992..6ad4d8efe 100644 --- a/vendor/github.com/uptrace/bun/model.go +++ b/vendor/github.com/uptrace/bun/model.go @@ -13,7 +13,10 @@ import ( var errNilModel = errors.New("bun: Model(nil)") -var timeType = reflect.TypeOf((*time.Time)(nil)).Elem() +var ( + timeType = reflect.TypeOf((*time.Time)(nil)).Elem() + bytesType = reflect.TypeOf((*[]byte)(nil)).Elem() +) type Model = schema.Model @@ -102,19 +105,22 @@ func _newModel(db *DB, dest interface{}, scan bool) (Model, error) { } v = v.Elem() + typ := v.Type() + + switch typ { + case timeType, bytesType: + return newScanModel(db, []interface{}{dest}), nil + } switch v.Kind() { case reflect.Map: - typ := v.Type() if err := validMap(typ); err != nil { return nil, err } mapPtr := v.Addr().Interface().(*map[string]interface{}) return newMapModel(db, mapPtr), nil case reflect.Struct: - if v.Type() != timeType { - return newStructTableModelValue(db, dest, v), nil - } + return newStructTableModelValue(db, dest, v), nil case reflect.Slice: switch elemType := sliceElemType(v); elemType.Kind() { case reflect.Struct: |