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

Method manyQuery

orm/join.go:46–87  ·  view source on GitHub ↗
(q *Query)

Source from the content-addressed store, hash-verified

44}
45
46func (j *join) manyQuery(q *Query) (*Query, error) {
47 manyModel := newManyModel(j)
48 if manyModel == nil {
49 return nil, nil
50 }
51
52 q = q.Model(manyModel)
53 if j.ApplyQuery != nil {
54 var err error
55 q, err = j.ApplyQuery(q)
56 if err != nil {
57 return nil, err
58 }
59 }
60
61 if len(q.columns) == 0 {
62 q.columns = append(q.columns, &hasManyColumnsAppender{j})
63 }
64
65 baseTable := j.BaseModel.Table()
66 var where []byte
67 if len(j.Rel.JoinFKs) > 1 {
68 where = append(where, '(')
69 }
70 where = appendColumns(where, j.JoinModel.Table().Alias, j.Rel.JoinFKs)
71 if len(j.Rel.JoinFKs) > 1 {
72 where = append(where, ')')
73 }
74 where = append(where, " IN ("...)
75 where = appendChildValues(
76 where, j.JoinModel.Root(), j.JoinModel.ParentIndex(), j.Rel.BaseFKs)
77 where = append(where, ")"...)
78 q = q.Where(internal.BytesToString(where))
79
80 if j.Rel.Polymorphic != nil {
81 q = q.Where(`? IN (?, ?)`,
82 j.Rel.Polymorphic.Column,
83 baseTable.ModelName, baseTable.TypeName)
84 }
85
86 return q, nil
87}
88
89func (j *join) selectM2M(fmter QueryFormatter, q *Query) error {
90 q, err := j.m2mQuery(fmter, q)

Callers 2

selectManyMethod · 0.95
select_test.goFile · 0.80

Calls 9

BytesToStringFunction · 0.92
newManyModelFunction · 0.85
appendColumnsFunction · 0.85
appendChildValuesFunction · 0.85
WhereMethod · 0.80
ModelMethod · 0.65
TableMethod · 0.65
RootMethod · 0.65
ParentIndexMethod · 0.65

Tested by

no test coverage detected