( fmter QueryFormatter, b []byte, fields []*Field, strct reflect.Value, )
| 228 | } |
| 229 | |
| 230 | func (q *InsertQuery) appendValues( |
| 231 | fmter QueryFormatter, b []byte, fields []*Field, strct reflect.Value, |
| 232 | ) (_ []byte, err error) { |
| 233 | for i, f := range fields { |
| 234 | if i > 0 { |
| 235 | b = append(b, ", "...) |
| 236 | } |
| 237 | |
| 238 | app, ok := q.q.modelValues[f.SQLName] |
| 239 | if ok { |
| 240 | b, err = app.AppendQuery(fmter, b) |
| 241 | if err != nil { |
| 242 | return nil, err |
| 243 | } |
| 244 | q.addReturningField(f) |
| 245 | continue |
| 246 | } |
| 247 | |
| 248 | switch { |
| 249 | case q.placeholder: |
| 250 | b = append(b, '?') |
| 251 | case (f.Default != "" || f.NullZero()) && f.HasZeroValue(strct): |
| 252 | b = append(b, "DEFAULT"...) |
| 253 | q.addReturningField(f) |
| 254 | default: |
| 255 | b = f.AppendValue(b, strct, 1) |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | for i, v := range q.q.extraValues { |
| 260 | if i > 0 || len(fields) > 0 { |
| 261 | b = append(b, ", "...) |
| 262 | } |
| 263 | |
| 264 | b, err = v.value.AppendQuery(fmter, b) |
| 265 | if err != nil { |
| 266 | return nil, err |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | return b, nil |
| 271 | } |
| 272 | |
| 273 | func (q *InsertQuery) appendSliceValues( |
| 274 | fmter QueryFormatter, b []byte, fields []*Field, slice reflect.Value, |
no test coverage detected