diff options
author | 2023-09-11 15:16:52 +0200 | |
---|---|---|
committer | 2023-09-11 15:16:52 +0200 | |
commit | 7011f57b09fc03bde9d48fef191e904110c09c4b (patch) | |
tree | 1118192d6c8d49715d2293ee19c79e50b89de64e /vendor/github.com/uptrace/bun/internal/util.go | |
parent | [chore]: Bump golang.org/x/net from 0.14.0 to 0.15.0 (#2193) (diff) | |
download | gotosocial-7011f57b09fc03bde9d48fef191e904110c09c4b.tar.xz |
[chore] bump bun v1.1.14 -> v1.1.15 (#2195)
Diffstat (limited to 'vendor/github.com/uptrace/bun/internal/util.go')
-rw-r--r-- | vendor/github.com/uptrace/bun/internal/util.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/github.com/uptrace/bun/internal/util.go b/vendor/github.com/uptrace/bun/internal/util.go index 641309725..66b92b3c5 100644 --- a/vendor/github.com/uptrace/bun/internal/util.go +++ b/vendor/github.com/uptrace/bun/internal/util.go @@ -55,3 +55,27 @@ func Unwrap(err error) error { } return u.Unwrap() } + +func FieldByIndexAlloc(v reflect.Value, index []int) reflect.Value { + if len(index) == 1 { + return v.Field(index[0]) + } + + for i, idx := range index { + if i > 0 { + v = indirectNil(v) + } + v = v.Field(idx) + } + return v +} + +func indirectNil(v reflect.Value) reflect.Value { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + return v +} |