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

Method appendHasOneJoin

orm/join.go:238–290  ·  view source on GitHub ↗
(fmter QueryFormatter, b []byte, q *Query)

Source from the content-addressed store, hash-verified

236}
237
238func (j *join) appendHasOneJoin(fmter QueryFormatter, b []byte, q *Query) (_ []byte, err error) {
239 isSoftDelete := j.JoinModel.Table().SoftDeleteField != nil && !q.hasFlag(allWithDeletedFlag)
240
241 b = append(b, "LEFT JOIN "...)
242 b = fmter.FormatQuery(b, string(j.JoinModel.Table().SQLNameForSelects))
243 b = append(b, " AS "...)
244 b = j.appendAlias(b)
245
246 b = append(b, " ON "...)
247
248 if isSoftDelete {
249 b = append(b, '(')
250 }
251
252 if len(j.Rel.BaseFKs) > 1 {
253 b = append(b, '(')
254 }
255 for i, baseFK := range j.Rel.BaseFKs {
256 if i > 0 {
257 b = append(b, " AND "...)
258 }
259 b = j.appendAlias(b)
260 b = append(b, '.')
261 b = append(b, j.Rel.JoinFKs[i].Column...)
262 b = append(b, " = "...)
263 b = j.appendBaseAlias(b)
264 b = append(b, '.')
265 b = append(b, baseFK.Column...)
266 }
267 if len(j.Rel.BaseFKs) > 1 {
268 b = append(b, ')')
269 }
270
271 for _, on := range j.on {
272 b = on.AppendSep(b)
273 b, err = on.AppendQuery(fmter, b)
274 if err != nil {
275 return nil, err
276 }
277 }
278
279 if isSoftDelete {
280 b = append(b, ')')
281 }
282
283 if isSoftDelete {
284 b = append(b, " AND "...)
285 b = j.appendAlias(b)
286 b = j.appendSoftDelete(b, q.flags)
287 }
288
289 return b, nil
290}
291
292type hasManyColumnsAppender struct {
293 *join

Callers 1

AppendQueryMethod · 0.80

Calls 8

appendAliasMethod · 0.95
appendBaseAliasMethod · 0.95
appendSoftDeleteMethod · 0.95
TableMethod · 0.65
FormatQueryMethod · 0.65
AppendSepMethod · 0.65
AppendQueryMethod · 0.65
hasFlagMethod · 0.45

Tested by

no test coverage detected