diff options
| author | 2025-03-10 19:40:16 +0000 | |
|---|---|---|
| committer | 2025-03-10 19:40:16 +0000 | |
| commit | bad12a62e60bacf5222e39e26f7da97fdea23c15 (patch) | |
| tree | cd132c66b3a88dac3af27df77c71891a2bc89fa1 /vendor/github.com/uptrace/bun/model_table_has_many.go | |
| parent | [chore] add warning message when wazero compiler not supported (#3894) (diff) | |
| download | gotosocial-bad12a62e60bacf5222e39e26f7da97fdea23c15.tar.xz | |
bumps our uptrace/bun dependencies to v1.2.11 (#3895)
Diffstat (limited to 'vendor/github.com/uptrace/bun/model_table_has_many.go')
| -rw-r--r-- | vendor/github.com/uptrace/bun/model_table_has_many.go | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/vendor/github.com/uptrace/bun/model_table_has_many.go b/vendor/github.com/uptrace/bun/model_table_has_many.go index c7bdee98a..dd74a774c 100644 --- a/vendor/github.com/uptrace/bun/model_table_has_many.go +++ b/vendor/github.com/uptrace/bun/model_table_has_many.go @@ -152,25 +152,24 @@ func modelKey(key []interface{}, strct reflect.Value, fields []*schema.Field) [] // indirectAsKey return the field value dereferencing the pointer if necessary. // The value is then used as a map key. func indirectAsKey(field reflect.Value) interface{} { - if field.Kind() != reflect.Ptr { - i := field.Interface() - if valuer, ok := i.(driver.Valuer); ok { - if v, err := valuer.Value(); err == nil { - switch reflect.TypeOf(v).Kind() { - case reflect.Array, reflect.Chan, reflect.Func, - reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: - // NOTE #1107, these types cannot be used as map key, - // let us use original logic. - return i - default: - return v - } + if field.Kind() == reflect.Pointer && field.IsNil() { + return nil + } + + i := field.Interface() + if valuer, ok := i.(driver.Valuer); ok { + if v, err := valuer.Value(); err == nil { + switch reflect.TypeOf(v).Kind() { + case reflect.Array, reflect.Chan, reflect.Func, + reflect.Map, reflect.Pointer, reflect.Slice, reflect.UnsafePointer: + // NOTE #1107, these types cannot be used as map key, + // let us use original logic. + return i + default: + return v } } - return i } - if field.IsNil() { - return nil - } - return field.Elem().Interface() + + return reflect.Indirect(field).Interface() } |
