MCPcopy
hub / github.com/go-gorm/gorm / processValue

Function processValue

clause/expression.go:161–182  ·  view source on GitHub ↗

processValue handles different value types appropriately for SQL parameter binding It checks for driver.Valuer first, then handles slices/arrays, and finally adds single values

(builder Builder, value interface{})

Source from the content-addressed store, hash-verified

159// processValue handles different value types appropriately for SQL parameter binding
160// It checks for driver.Valuer first, then handles slices/arrays, and finally adds single values
161func processValue(builder Builder, value interface{}) {
162 if _, ok := value.(driver.Valuer); ok {
163 builder.AddVar(builder, value)
164 return
165 }
166
167 switch rv := reflect.ValueOf(value); rv.Kind() {
168 case reflect.Slice, reflect.Array:
169 if rv.Len() == 0 {
170 builder.AddVar(builder, nil)
171 } else {
172 for i := 0; i < rv.Len(); i++ {
173 if i > 0 {
174 builder.WriteByte(',')
175 }
176 builder.AddVar(builder, rv.Index(i).Interface())
177 }
178 }
179 default:
180 builder.AddVar(builder, value)
181 }
182}
183
184// IN Whether a value is within a set of values
185type IN struct {

Callers 2

BuildMethod · 0.85
BuildMethod · 0.85

Calls 3

LenMethod · 0.80
AddVarMethod · 0.65
WriteByteMethod · 0.65

Tested by

no test coverage detected