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

Method mustAppendSet

orm/update.go:138–168  ·  view source on GitHub ↗
(fmter QueryFormatter, b []byte)

Source from the content-addressed store, hash-verified

136}
137
138func (q *UpdateQuery) mustAppendSet(fmter QueryFormatter, b []byte) (_ []byte, err error) {
139 if len(q.q.set) > 0 {
140 return q.q.appendSet(fmter, b)
141 }
142
143 b = append(b, " SET "...)
144
145 if m, ok := q.q.model.(*mapModel); ok {
146 return q.appendMapSet(b, m.m), nil
147 }
148
149 if !q.q.hasTableModel() {
150 return nil, errModelNil
151 }
152
153 value := q.q.tableModel.Value()
154 if value.Kind() == reflect.Struct {
155 b, err = q.appendSetStruct(fmter, b, value)
156 } else {
157 if value.Len() > 0 {
158 b, err = q.appendSetSlice(b)
159 } else {
160 err = fmt.Errorf("pg: can't bulk-update empty slice %s", value.Type())
161 }
162 }
163 if err != nil {
164 return nil, err
165 }
166
167 return b, nil
168}
169
170func (q *UpdateQuery) appendMapSet(b []byte, m map[string]interface{}) []byte {
171 keys := make([]string, 0, len(m))

Callers 1

AppendQueryMethod · 0.95

Calls 8

appendMapSetMethod · 0.95
appendSetStructMethod · 0.95
appendSetSliceMethod · 0.95
appendSetMethod · 0.80
hasTableModelMethod · 0.80
ValueMethod · 0.65
KindMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected