revert it to handle private joins

This commit is contained in:
mtsoltan 2024-08-12 03:42:05 +03:00
parent f9315d3d01
commit a1d9d7dc18
No known key found for this signature in database
GPG Key ID: 2F56E59CE4D1D296
7 changed files with 14 additions and 12 deletions

View File

@ -134,7 +134,7 @@ func Delete(config *Config) func(db *gorm.DB) {
func(db *gorm.DB) { func(db *gorm.DB) {
deleteClause.Modifier = db.Statement.Table deleteClause.Modifier = db.Statement.Table
}, },
func(db *gorm.DB, tableAliasName string, join gorm.Join, relation *schema.Relationship) { func(db *gorm.DB, tableAliasName string, idx int, relation *schema.Relationship) {
}, },
) )

View File

@ -8,7 +8,7 @@ import (
"strings" "strings"
) )
func HandleJoins(db *gorm.DB, prejoinCallback func(db *gorm.DB), perFieldNameCallback func(db *gorm.DB, tableAliasName string, join gorm.Join, relation *schema.Relationship)) { func HandleJoins(db *gorm.DB, prejoinCallback func(db *gorm.DB), perFieldNameCallback func(db *gorm.DB, tableAliasName string, idx int, relation *schema.Relationship)) {
// inline joins // inline joins
fromClause := clause.From{} fromClause := clause.From{}
if v, ok := db.Statement.Clauses["FROM"].Expression.(clause.From); ok { if v, ok := db.Statement.Clauses["FROM"].Expression.(clause.From); ok {
@ -19,7 +19,7 @@ func HandleJoins(db *gorm.DB, prejoinCallback func(db *gorm.DB), perFieldNameCal
prejoinCallback(db) prejoinCallback(db)
specifiedRelationsName := make(map[string]interface{}) specifiedRelationsName := make(map[string]interface{})
for _, join := range db.Statement.Joins { for idx, join := range db.Statement.Joins {
if db.Statement.Schema != nil { if db.Statement.Schema != nil {
var isRelations bool // is relations or raw sql var isRelations bool // is relations or raw sql
var relations []*schema.Relationship var relations []*schema.Relationship
@ -59,7 +59,7 @@ func HandleJoins(db *gorm.DB, prejoinCallback func(db *gorm.DB), perFieldNameCal
tableAliasName = utils.NestedRelationName(parentTableName, tableAliasName) tableAliasName = utils.NestedRelationName(parentTableName, tableAliasName)
} }
perFieldNameCallback(db, tableAliasName, join, relation) perFieldNameCallback(db, tableAliasName, idx, relation)
exprs := make([]clause.Expression, len(relation.References)) exprs := make([]clause.Expression, len(relation.References))
for idx, ref := range relation.References { for idx, ref := range relation.References {

View File

@ -104,10 +104,10 @@ func BuildQuerySQL(db *gorm.DB) {
} }
} }
}, },
func(db *gorm.DB, tableAliasName string, join gorm.Join, relation *schema.Relationship) { func(db *gorm.DB, tableAliasName string, idx int, relation *schema.Relationship) {
columnStmt := gorm.Statement{ columnStmt := gorm.Statement{
Table: tableAliasName, DB: db, Schema: relation.FieldSchema, Table: tableAliasName, DB: db, Schema: relation.FieldSchema,
Selects: join.Selects, Omits: join.Omits, Selects: db.Statement.Joins[idx].Selects, Omits: db.Statement.Joins[idx].Omits,
} }
selectColumns, restricted := columnStmt.SelectAndOmitColumns(false, false) selectColumns, restricted := columnStmt.SelectAndOmitColumns(false, false)

View File

@ -260,7 +260,7 @@ func joins(db *DB, joinType clause.JoinType, query string, args ...interface{})
if len(args) == 1 { if len(args) == 1 {
if db, ok := args[0].(*DB); ok { if db, ok := args[0].(*DB); ok {
j := Join{ j := join{
Name: query, Conds: args, Selects: db.Statement.Selects, Name: query, Conds: args, Selects: db.Statement.Selects,
Omits: db.Statement.Omits, JoinType: joinType, Omits: db.Statement.Omits, JoinType: joinType,
} }
@ -272,7 +272,7 @@ func joins(db *DB, joinType clause.JoinType, query string, args ...interface{})
} }
} }
tx.Statement.Joins = append(tx.Statement.Joins, Join{Name: query, Conds: args, JoinType: joinType}) tx.Statement.Joins = append(tx.Statement.Joins, join{Name: query, Conds: args, JoinType: joinType})
return return
} }

2
go.sum
View File

@ -4,3 +4,5 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=

View File

@ -33,7 +33,7 @@ type Statement struct {
Selects []string // selected columns Selects []string // selected columns
Omits []string // omit columns Omits []string // omit columns
ColumnMapping map[string]string // map columns ColumnMapping map[string]string // map columns
Joins []Join Joins []join
Preloads map[string][]interface{} Preloads map[string][]interface{}
Settings sync.Map Settings sync.Map
ConnPool ConnPool ConnPool ConnPool
@ -49,7 +49,7 @@ type Statement struct {
scopes []func(*DB) *DB scopes []func(*DB) *DB
} }
type Join struct { type join struct {
Name string Name string
Conds []interface{} Conds []interface{}
On *clause.Where On *clause.Where
@ -538,7 +538,7 @@ func (stmt *Statement) clone() *Statement {
} }
if len(stmt.Joins) > 0 { if len(stmt.Joins) > 0 {
newStmt.Joins = make([]Join, len(stmt.Joins)) newStmt.Joins = make([]join, len(stmt.Joins))
copy(newStmt.Joins, stmt.Joins) copy(newStmt.Joins, stmt.Joins)
} }

View File

@ -11,7 +11,7 @@ require (
gorm.io/driver/postgres v1.5.9 gorm.io/driver/postgres v1.5.9
gorm.io/driver/sqlite v1.5.6 gorm.io/driver/sqlite v1.5.6
gorm.io/driver/sqlserver v1.5.3 gorm.io/driver/sqlserver v1.5.3
gorm.io/gorm v1.25.10 gorm.io/gorm v1.25.11
) )
require ( require (