summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/join.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/join.go')
-rw-r--r--vendor/github.com/uptrace/bun/join.go48
1 files changed, 22 insertions, 26 deletions
diff --git a/vendor/github.com/uptrace/bun/join.go b/vendor/github.com/uptrace/bun/join.go
index 4557f5bc0..42bf800d6 100644
--- a/vendor/github.com/uptrace/bun/join.go
+++ b/vendor/github.com/uptrace/bun/join.go
@@ -8,18 +8,18 @@ import (
"github.com/uptrace/bun/schema"
)
-type join struct {
- Parent *join
+type relationJoin struct {
+ Parent *relationJoin
BaseModel tableModel
JoinModel tableModel
Relation *schema.Relation
- ApplyQueryFunc func(*SelectQuery) *SelectQuery
- columns []schema.QueryWithArgs
+ apply func(*SelectQuery) *SelectQuery
+ columns []schema.QueryWithArgs
}
-func (j *join) applyQuery(q *SelectQuery) {
- if j.ApplyQueryFunc == nil {
+func (j *relationJoin) applyTo(q *SelectQuery) {
+ if j.apply == nil {
return
}
@@ -30,24 +30,20 @@ func (j *join) applyQuery(q *SelectQuery) {
table, q.table = q.table, j.JoinModel.Table()
columns, q.columns = q.columns, nil
- q = j.ApplyQueryFunc(q)
+ q = j.apply(q)
// Restore state.
q.table = table
j.columns, q.columns = q.columns, columns
}
-func (j *join) Select(ctx context.Context, q *SelectQuery) error {
+func (j *relationJoin) Select(ctx context.Context, q *SelectQuery) error {
switch j.Relation.Type {
- case schema.HasManyRelation:
- return j.selectMany(ctx, q)
- case schema.ManyToManyRelation:
- return j.selectM2M(ctx, q)
}
panic("not reached")
}
-func (j *join) selectMany(ctx context.Context, q *SelectQuery) error {
+func (j *relationJoin) selectMany(ctx context.Context, q *SelectQuery) error {
q = j.manyQuery(q)
if q == nil {
return nil
@@ -55,7 +51,7 @@ func (j *join) selectMany(ctx context.Context, q *SelectQuery) error {
return q.Scan(ctx)
}
-func (j *join) manyQuery(q *SelectQuery) *SelectQuery {
+func (j *relationJoin) manyQuery(q *SelectQuery) *SelectQuery {
hasManyModel := newHasManyModel(j)
if hasManyModel == nil {
return nil
@@ -86,13 +82,13 @@ func (j *join) manyQuery(q *SelectQuery) *SelectQuery {
q = q.Where("? = ?", j.Relation.PolymorphicField.SQLName, j.Relation.PolymorphicValue)
}
- j.applyQuery(q)
+ j.applyTo(q)
q = q.Apply(j.hasManyColumns)
return q
}
-func (j *join) hasManyColumns(q *SelectQuery) *SelectQuery {
+func (j *relationJoin) hasManyColumns(q *SelectQuery) *SelectQuery {
if j.Relation.M2MTable != nil {
q = q.ColumnExpr(string(j.Relation.M2MTable.SQLAlias) + ".*")
}
@@ -122,7 +118,7 @@ func (j *join) hasManyColumns(q *SelectQuery) *SelectQuery {
return q
}
-func (j *join) selectM2M(ctx context.Context, q *SelectQuery) error {
+func (j *relationJoin) selectM2M(ctx context.Context, q *SelectQuery) error {
q = j.m2mQuery(q)
if q == nil {
return nil
@@ -130,7 +126,7 @@ func (j *join) selectM2M(ctx context.Context, q *SelectQuery) error {
return q.Scan(ctx)
}
-func (j *join) m2mQuery(q *SelectQuery) *SelectQuery {
+func (j *relationJoin) m2mQuery(q *SelectQuery) *SelectQuery {
fmter := q.db.fmter
m2mModel := newM2MModel(j)
@@ -170,13 +166,13 @@ func (j *join) m2mQuery(q *SelectQuery) *SelectQuery {
j.Relation.M2MTable.SQLAlias, m2mJoinField.SQLName)
}
- j.applyQuery(q)
+ j.applyTo(q)
q = q.Apply(j.hasManyColumns)
return q
}
-func (j *join) hasParent() bool {
+func (j *relationJoin) hasParent() bool {
if j.Parent != nil {
switch j.Parent.Relation.Type {
case schema.HasOneRelation, schema.BelongsToRelation:
@@ -186,7 +182,7 @@ func (j *join) hasParent() bool {
return false
}
-func (j *join) appendAlias(fmter schema.Formatter, b []byte) []byte {
+func (j *relationJoin) appendAlias(fmter schema.Formatter, b []byte) []byte {
quote := fmter.IdentQuote()
b = append(b, quote)
@@ -195,7 +191,7 @@ func (j *join) appendAlias(fmter schema.Formatter, b []byte) []byte {
return b
}
-func (j *join) appendAliasColumn(fmter schema.Formatter, b []byte, column string) []byte {
+func (j *relationJoin) appendAliasColumn(fmter schema.Formatter, b []byte, column string) []byte {
quote := fmter.IdentQuote()
b = append(b, quote)
@@ -206,7 +202,7 @@ func (j *join) appendAliasColumn(fmter schema.Formatter, b []byte, column string
return b
}
-func (j *join) appendBaseAlias(fmter schema.Formatter, b []byte) []byte {
+func (j *relationJoin) appendBaseAlias(fmter schema.Formatter, b []byte) []byte {
quote := fmter.IdentQuote()
if j.hasParent() {
@@ -218,7 +214,7 @@ func (j *join) appendBaseAlias(fmter schema.Formatter, b []byte) []byte {
return append(b, j.BaseModel.Table().SQLAlias...)
}
-func (j *join) appendSoftDelete(b []byte, flags internal.Flag) []byte {
+func (j *relationJoin) appendSoftDelete(b []byte, flags internal.Flag) []byte {
b = append(b, '.')
b = append(b, j.JoinModel.Table().SoftDeleteField.SQLName...)
if flags.Has(deletedFlag) {
@@ -229,7 +225,7 @@ func (j *join) appendSoftDelete(b []byte, flags internal.Flag) []byte {
return b
}
-func appendAlias(b []byte, j *join) []byte {
+func appendAlias(b []byte, j *relationJoin) []byte {
if j.hasParent() {
b = appendAlias(b, j.Parent)
b = append(b, "__"...)
@@ -238,7 +234,7 @@ func appendAlias(b []byte, j *join) []byte {
return b
}
-func (j *join) appendHasOneJoin(
+func (j *relationJoin) appendHasOneJoin(
fmter schema.Formatter, b []byte, q *SelectQuery,
) (_ []byte, err error) {
isSoftDelete := j.JoinModel.Table().SoftDeleteField != nil && !q.flags.Has(allWithDeletedFlag)