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

Method appendColumnsValues

orm/insert.go:134–193  ·  view source on GitHub ↗
(fmter QueryFormatter, b []byte)

Source from the content-addressed store, hash-verified

132}
133
134func (q *InsertQuery) appendColumnsValues(fmter QueryFormatter, b []byte) (_ []byte, err error) {
135 if q.q.hasMultiTables() {
136 if q.q.columns != nil {
137 b = append(b, " ("...)
138 b, err = q.q.appendColumns(fmter, b)
139 if err != nil {
140 return nil, err
141 }
142 b = append(b, ")"...)
143 }
144
145 b = append(b, " SELECT * FROM "...)
146 b, err = q.q.appendOtherTables(fmter, b)
147 if err != nil {
148 return nil, err
149 }
150
151 return b, nil
152 }
153
154 if m, ok := q.q.model.(*mapModel); ok {
155 return q.appendMapColumnsValues(b, m.m), nil
156 }
157
158 if !q.q.hasTableModel() {
159 return nil, errModelNil
160 }
161
162 fields, err := q.q.getFields()
163 if err != nil {
164 return nil, err
165 }
166
167 if len(fields) == 0 {
168 fields = q.q.tableModel.Table().Fields
169 }
170 value := q.q.tableModel.Value()
171
172 b = append(b, " ("...)
173 b = q.appendColumns(b, fields)
174 b = append(b, ") VALUES ("...)
175 if m, ok := q.q.tableModel.(*sliceTableModel); ok {
176 if m.sliceLen == 0 {
177 err = fmt.Errorf("pg: can't bulk-insert empty slice %s", value.Type())
178 return nil, err
179 }
180 b, err = q.appendSliceValues(fmter, b, fields, value)
181 if err != nil {
182 return nil, err
183 }
184 } else {
185 b, err = q.appendValues(fmter, b, fields, value)
186 if err != nil {
187 return nil, err
188 }
189 }
190 b = append(b, ")"...)
191

Callers 1

AppendQueryMethod · 0.95

Calls 10

appendColumnsMethod · 0.95
appendSliceValuesMethod · 0.95
appendValuesMethod · 0.95
hasMultiTablesMethod · 0.80
appendOtherTablesMethod · 0.80
hasTableModelMethod · 0.80
getFieldsMethod · 0.80
TableMethod · 0.65
ValueMethod · 0.65

Tested by

no test coverage detected