MCPcopy Create free account
hub / github.com/go-pg/pg / appendSetStruct

Method appendSetStruct

orm/update.go:195–250  ·  view source on GitHub ↗
(fmter QueryFormatter, b []byte, strct reflect.Value)

Source from the content-addressed store, hash-verified

193}
194
195func (q *UpdateQuery) appendSetStruct(fmter QueryFormatter, b []byte, strct reflect.Value) ([]byte, error) {
196 fields, err := q.q.getFields()
197 if err != nil {
198 return nil, err
199 }
200
201 if len(fields) == 0 {
202 fields = q.q.tableModel.Table().DataFields
203 }
204
205 pos := len(b)
206 for _, f := range fields {
207 if q.omitZero && f.NullZero() && f.HasZeroValue(strct) {
208 continue
209 }
210
211 if len(b) != pos {
212 b = append(b, ", "...)
213 pos = len(b)
214 }
215
216 b = append(b, f.Column...)
217 b = append(b, " = "...)
218
219 if q.placeholder {
220 b = append(b, '?')
221 continue
222 }
223
224 app, ok := q.q.modelValues[f.SQLName]
225 if ok {
226 b, err = app.AppendQuery(fmter, b)
227 if err != nil {
228 return nil, err
229 }
230 } else {
231 b = f.AppendValue(b, strct, 1)
232 }
233 }
234
235 for i, v := range q.q.extraValues {
236 if i > 0 || len(fields) > 0 {
237 b = append(b, ", "...)
238 }
239
240 b = types.AppendIdent(b, v.column, 1)
241 b = append(b, " = "...)
242
243 b, err = v.value.AppendQuery(fmter, b)
244 if err != nil {
245 return nil, err
246 }
247 }
248
249 return b, nil
250}
251
252func (q *UpdateQuery) appendSetSlice(b []byte) ([]byte, error) {

Callers 1

mustAppendSetMethod · 0.95

Calls 7

AppendIdentFunction · 0.92
getFieldsMethod · 0.80
NullZeroMethod · 0.80
HasZeroValueMethod · 0.80
TableMethod · 0.65
AppendQueryMethod · 0.65
AppendValueMethod · 0.65

Tested by

no test coverage detected