MCPcopy Index your code
hub / github.com/aarondl/sqlboiler / appendArrayElement

Function appendArrayElement

types/array.go:1113–1147  ·  view source on GitHub ↗

appendArrayElement appends rv to the buffer, returning the extended buffer and the delimiter to use before the next element. When rv's Kind is neither reflect.Array nor reflect.Slice, it is converted using driver.DefaultParameterConverter and the resulting []byte or string is double-quoted. See ht

(b []byte, rv reflect.Value)

Source from the content-addressed store, hash-verified

1111//
1112// See http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO
1113func appendArrayElement(b []byte, rv reflect.Value) ([]byte, string, error) {
1114 if k := rv.Kind(); k == reflect.Array || k == reflect.Slice {
1115 if t := rv.Type(); t != typeByteSlice && !t.Implements(typeDriverValuer) {
1116 if n := rv.Len(); n > 0 {
1117 return appendArray(b, rv, n)
1118 }
1119
1120 return b, "", nil
1121 }
1122 }
1123
1124 var del = ","
1125 var err error
1126 var iv any = rv.Interface()
1127
1128 if ad, ok := iv.(ArrayDelimiter); ok {
1129 del = ad.ArrayDelimiter()
1130 }
1131
1132 if iv, err = driver.DefaultParameterConverter.ConvertValue(iv); err != nil {
1133 return b, del, err
1134 }
1135
1136 switch v := iv.(type) {
1137 case nil:
1138 return append(b, "NULL"...), del, nil
1139 case []byte:
1140 return appendArrayQuotedBytes(b, v), del, nil
1141 case string:
1142 return appendArrayQuotedBytes(b, []byte(v)), del, nil
1143 }
1144
1145 b, err = appendValue(b, iv)
1146 return b, del, err
1147}
1148
1149func appendArrayQuotedBytes(b, v []byte) []byte {
1150 b = append(b, '"')

Callers 1

appendArrayFunction · 0.85

Calls 5

appendArrayFunction · 0.85
appendArrayQuotedBytesFunction · 0.85
appendValueFunction · 0.85
ArrayDelimiterMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…