summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/model_table_has_many.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2025-03-10 19:40:16 +0000
committerLibravatar GitHub <noreply@github.com>2025-03-10 19:40:16 +0000
commitbad12a62e60bacf5222e39e26f7da97fdea23c15 (patch)
treecd132c66b3a88dac3af27df77c71891a2bc89fa1 /vendor/github.com/uptrace/bun/model_table_has_many.go
parent[chore] add warning message when wazero compiler not supported (#3894) (diff)
downloadgotosocial-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.go35
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()
}